我發現這個Java代碼的Java教程頁面上:我不明白這一點( 「串」 == 「字符串」)例如
if ("progress" == evt.getPropertyName())
http://download.oracle.com/javase/tutorial/uiswing/examples/components/index.html
怎麼會這樣的工作?我認爲我們必須在這種情況下使用equals()
方法(string.equals("bla")
)?我們在這裏也可以使用equals()
嗎?它會更好嗎?有任何想法嗎?
編輯:所以如果equals()
會更好,那麼我真的不明白爲什麼一個嚴重的Oracle教程頁面沒有使用它?此外,我不明白爲什麼它的工作,因爲我認爲一個字符串是一個對象。如果我說object == object
,那麼這是個大問題。
對你的Edit的回答,文字「progress」可能被定義爲static和final,而JVM維護一個String文字的內部池,並且在編譯代碼中用相同的引用替換類似的字符串文字。正如其他海報所指出的那樣,使用==來比較字符串文字並不被認爲是一種好的做法。 –
在Oracle教程中您會發現這樣的事情,這似乎很奇怪。它只是表明除了我之外,你不能相信任何人。:) – emory
+1有時候Java就像英語。 –