- - PR -
String型のnew生成について
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-05-09 23:42
いつもお世話になっております。
String型のnew生成について質問です。 下記(1)のように生成と同時に値を入れた場合は暗黙的にnew生成されると思っているのですが、 (2)のようなコーディングをした場合、どのタイミングでnew生成されているのでしょうか? (1) String hoge = "hello"; // hogeがnew生成され、中に"hello"がセットされる (2) String hoge1 = "hello!!"; // hoge1がnew生成される String hoge2 = hoge1; // hoge2もnew生成される? hoge1 = "good bye!!"; // hoge1が再度new生成される? hoge2 = hoge1; // hoge2が再度new生成される? うまく文章で説明できなくて申しわけありませんが、 どなたかご存知の方がいましたら教えてください。 | ||||||||||||
|
投稿日時: 2007-05-09 23:50
されません。
されます。
されません。 参照型変数、参照渡し、あたりで検索をかけると幸せになれると思います。 <追記> まいったなあ・・・。今さらどうにもならなさそうだし。orz これで勘弁してください。m(_ _;m http://www.javaroad.jp/java_character2.htm [ メッセージ編集済み 編集者: さいくろう 編集日時 2007-05-10 00:17 ] | ||||||||||||
|
投稿日時: 2007-05-09 23:50
newとやっていないので、新たにインスタンスが作られているわけではありません。
単なるString型のインスタンスの代入です。 | ||||||||||||
|
投稿日時: 2007-05-10 00:48
いいえ。
いいえ。
いいえ。 作成されるように書いたとしても、それは右辺の時点のお話でしょう。 hoge や hoge1 が new されるわけではありません。 # 書き方難しい。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-05-10 01:17
「"hello"という内容をもったStringオブジェクトをnewして、それへの参照をhogeに代入する」 ですね。 newされるのはオブジェクトであり、変数はオブジェクトへの参照を保持するだけです。 質問の意図が、「文字列リテラルからStringオブジェクトが生成されるのは、どの時点か?」 ということであれば、回答はかなり複雑です。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31524&forum=12 | ||||||||||||
|
投稿日時: 2007-05-12 19:05
みなさま、ご回答ありがとうございます。
"hello!!"というオブジェクトがnew生成されるだけで、 hoge1は単にそのオブジェクトを参照しているだけなんですね。 javaの勉強を始めたばかりの頃に知識としては知っていたはずのですが、 実際にコーディングばっかりやっている間に捉え方がズレていたようです。 やっぱりjavaは難しいです…。 復習も兼ねて一度勉強しなおします。 ありがとうございました。 |
1