在我们继续前进: 我知道我们应该使用.equals()来比较内容。我现在只是在谈论如果实际的参考是以下情形一样...字符串比较困惑
假设我们有以下几点:
String str1 = "str";
String str2 = "string";
String str3 = "ing";
String str4 = str1 + str3;
str1 = str4;
String str5 = "string";
System.out.println(str1==str2);//false
我认为这应该是真实的,因为在字符串池,对“字符串”的引用应该是相同的,因为str1和str2现在都是“字符串”。这应该是真的,但最终结果为false。
System.out.println(str1.intern()==str2.intern());//true
我尝试这样做,它返回一个真正这个时候。 然后我尝试:
System.out.println(str1==str5);//false
System.out.println(str2==str5);//true
而且 的System.out.println( “STR” + “ing” 的== “字符串”); //真
是不应该来从字符串池? 有人可以帮忙解释一下吗?
'System.out.println(str1.intern()== str2.intern());'不应该返回true ...文本是不同的。 – Pokechu22 2014-11-01 21:22:32
'String'是'final',这意味着它是不可变的。改变文字,创建一个新的对象。 – 2014-11-01 21:22:38
可能的重复[是不错的做法使用java.lang.String.intern()?](http://stackoverflow.com/questions/1091045/is-it-good-practice-to-use-java-lang -string-intern) – kraskevich 2014-11-01 21:22:55