2

次のコードがあるとします。

String str1 = new String("Hello");
String str2 = str1;
String str3 = new String(str1);
String str4 = str3;
str4 += " World ";
if (str3==str4)
     System.out.println(“one”);
if (str3.equals(str4))
     System.out.println(“two”);
if (str1==str2)
     System.out.println(“three”); 
if (str3.equals(str2))
     System.out.println(“four”);

出力は次のとおりです。3 および 4

わかりません.. str3 == str4 を実行しただけです。どうすれば同じオブジェクトを参照できないのでしょうか..? str3 == str4 は false のようで、理由がわかりません。さらに、 str3.equals(str4) も false を返しますが、最初に得られなかったものと関係があると思います。

説明をいただければ幸いです。

4

2 に答える 2

7

aStringは不変であるため、+=オペレーターは新しいインスタンスを作成し、それを に割り当てますstr4。したがってstr4、 は等しくありませんstr3

于 2013-05-14T14:20:27.970 に答える