在我們繼續前進: 我知道我們應該使用.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