2016-08-15 104 views

回答

1

當你使用這個

String a="abc"; 
String b="abc"; 

java的內存是abc只創建一個對象,並在這裏a和b都指向同一個對象,並==不檢查字符串的內容,而不是它檢查的參考值。但只要你做到這一點

String b=new String("abc"); 

Java的內存是從a不同,現在B和A都指向兩個不同的對象,因此,如果你有equals功能結果比較的內容將是真正創建一個新對象b但如果您現在比較參考,結果將是錯誤的

Read about it's usage

+0

爲什麼你發佈的答案几乎是以前發佈的這個問題的答案的重複? –

+0

我正在寫這個答案,並且他在我即將完成的時候發佈了一個地方,並且存在差異,我提到了什麼==做什麼以及什麼等於。我尊重您的觀點,但我認爲它值得發佈。 –

+0

好的,他們指着同一個對象,但是當我做了這個b =「qwe」;? (我想在這一刻我用qwe創建一個新對象) –

0

這必須是大量的問題的重複,但我會發表評論說當你執行以下操作時:

String a = "abc"; 
String b = "abc"; 

JVM創建一個單個常量池中包含字符串abc的字符串對象。因此,ab字符串只是指向池中的相同字符串。

但是,當你做到以下幾點:

String a = "abc"; 
String b = new String("abc"); 

即使abc已經存在於池中創建新對象。因此比較a == b返回false,儘管這兩個字符串的內容仍然是等價的。

+0

評論,downvotes?說些什麼_。 –

+0

補充說明:在Java中,'=='比較內存位置,'equals()'比較字符串的內容。 – GingerDeadshot

相關問題