私は文字列をもっと理解するために遊んでいましたが、説明できないことに気づきました:
String str1 = "whatever";
String str2 = str1;
String str3 = "whatever";
System.out.println(str1==str2); //prints true...that's normal, they point to the same object
System.out.println(str1==str3); //gives true..how's that possible ?
最後の行はどのように真になりますか?これは、str1とstr3の両方がメモリ内で同じアドレスを持っていることを意味します。
これは、両方の文字列リテラルが同じ(「何でも」)であり、したがってstr1とstr3が同じオブジェクトに割り当てられていることを検出するのに十分賢いコンパイラ最適化ですか?それとも、文字列の基礎となるメカニズムに何かが欠けていますか?