Javadoc說如果在字符串池中有一個相等的String,那麼intern()方法將返回String。在intern()方法後比較兩個相等的字符串
public class Demo {
public static void main(String[] args) {
String str1 = "Apple";
String str2 = new String("Apple");
System.out.println(str1.intern() == str2); //false
System.out.println(str1 == str2.intern()); //true
}
}
我希望在這兩種情況下都能成立。
[這個答案](http://stackoverflow.com/a/40480291/)(以稍微不同的問題)說明了一切你問過。 –
我假設你明白'str1 == str2'會返回false;那麼,假設'str1'被分配了字符串字面值,[Javadoc](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#intern())描述那'str.intern()== str1'。因此,'str1.intern()== str2'與'str1 == str2'相同,因此它是錯誤的。 –