我跑到下面的程序,Java的String問題
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是否只彙集字符串,只初始化爲:「」,而不是新操作符?
另請嘗試:'firstString == thirdString.intern()',以查看字符串文字是否自動內部化。 –