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'相同,因此它是错误的。 –