JavaのStringについて

投稿者: Anonymous

プログラミング初心者です。

String name1 =“Japan”;
String name2 =“USA”;
String name3;
name3 = name1;
name1 = name2;
name2 = “UK”;
system.out.println(name1);
system.out.println(name2);
system.out.println(name3);

上記コードのアウトプットは

UK (name1 = name2 = UK と考えました)
UK
UK (name3 = name1 = name2 = UK と考えました)

と表示されると思っていましたが、
実際は、以下の通り表示されます。

USA
UK
Japan

なぜこのように表示されるかご教示頂けますと幸いです。
どうぞよろしくお願いいたします。

解決

プログラミング言語の代入と、等値性の宣言を混同されているのでしょうか。

String name1 =“Japan”;
String name2 =“USA”;
String name3;
name3 = name1; //`name3`にはこの時点の`name1`の値である"Japan"が代入される
name1 = name2; //`name1`にはこの時点の`name2`の値である"USA"が代入される、`name3`には無関係
name2 = “UK”;  //`name2`にはこの時点で"UK"が代入される、`name1`や`name3`には無関係

1行目の代入で設定されたname3の値が2行目のname1 = name2;で変わることはありません。数学記号の=を使っていますが、name3 = name1;という代入は、「この後ずっとname3name1を同じ値にする」という意味ではなく、単に「その時点のname1の値をname3に代入するだけ」(以下同様)と言うのがわかればすぐにご理解いただけると思うのですが、いかがでしょうか?

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *