質問: UK と考えました) ``` と表示されると思っていましたが、 実際は、以下の通り表示されます。 ``` USA UK Japan ``` なぜこのように表示されるかご教示頂けますと幸いです。 どうぞよろしくお願いいたします。
回答: 上記の説明、ちょっと違う気がするのですが、、、 例えば、 > > name3 = name1; > > これは、この時の name1 の値 "japan"が name3に代入されるのではなく、name3が指し示すオブジェクトが "japan" という(name1が指し示していた)オブジェクトになる事では? > > 同様に、 > > name1 = name2; > > name1が指し示すオブジェクトが (この時、name2が指し示す) "USA"になり、 > > name2 = "UK"; > > name2 が指し示すのが、(新しく作られた) "UK" というオブジェクトになる。 > > > 文字で書くとちょっと分かりにくいかも知れません。 で注意が必要なのが、文字列の比較。 同じ文字列(を指し示す 変数)でも == の比較で一致と判定され無い事があります。 name1 = "USA"; name2 = "USA"; (name1 == name2) ==> これは一致すると思われる。(同じオブジェクトを指している可能性大) name3 = "US"; name2 = name3 + "A"; (name1 == name2) ==> 一致しないと判定される。(筈。--> 違うと指摘あり、仕様確認が必要) 理由は、== が中の文字列で判定していないためで、他のオブジェクトでも同様。 string.equals メソッド等で判定する必要があります。 以上、参考までに。