String プールの奇妙な動作について質問があります。==
等しい文字列を比較して、それらがプールにあるかどうかを確認するために使用しています。
public class StringPoolTest {
public static void main(String[] args) {
new StringPoolTest().run();
}
String giveLiteralString() {
return "555";
}
void run() {
String s1 = giveLiteralString() + "";
System.out.println("555" == "555" + "");
System.out.println(giveLiteralString() == giveLiteralString() + "");
}
}
出力は次のとおりです。
true
false
これは私にとって大きな驚きです。誰でもこれを説明できますか?これについては、コンパイル時に何かが起こっていると思います。しかし、なぜ""
String に追加しても違いが生じるのでしょうか?