次のプログラムを実行しました。
String firstString = "String";
String secondString = "String";
String thirdString = new String("String");
System.out.println(firstString == secondString);
System.out.println(firstString == thirdString);
System.out.println(firstString.intern() == thirdString);
System.out.println(firstString.intern() == thirdString.intern());
System.out.println(firstString.intern().equals(thirdString.intern()));
System.out.println(firstString == thirdString);
そして私の出力は
true
false
false
true
true
false
jvm は、同じ内容の文字列を同じ文字列としてプールすることを知りました。そうですか?それが本当なら、firstString == thirdString が false を返さないのはなぜですか? jvm は、new 演算子ではなく :"" で初期化された文字列のみをプールしますか?