2014-12-13 67 views

回答

1

==操作會比較僅供參考

.equals()將比較值。

你的情況

str1==str2 //比較兩個引用,這是不同的。

它當時,str1.equals(str2),它會比較的值,這將return true

的「==」操作符

在Java中,當「==」操作符是用來比較2個對象,它檢查對象是否指向內存中的相同位置。換句話說,它檢查以查看是否2對象名是基本上相同的內存引用位置資訊「==」操作員在存儲器中的對象位置(一個或多個)進行比較

的‘等於’方法 Java的字符串類實際上覆蓋了Object類中的默認equals()實現 - 並且它會覆蓋該方法,以便它僅檢查字符串的值,而不檢查它們在內存中的位置。

+0

所以在這裏,str1和str3是指相同的內存位置? – user2014 2014-12-13 16:17:14

+0

@ user2014'「」+ 5'這裏'5'只被視爲String,而'str.length()'將被視爲'int',但所有三者的哈希碼都是相同的。但不太確定爲什麼結果不同,已經爲您的問題提出了上訴。 – 2014-12-13 16:45:09

0

這裏str1 =「abc:5」;位於字符串的常量池中,str2與新運算符的2個不同對象連接。所以str1和str2都指的是不同的對象。這就是它顯示錯誤的原因。

+0

你能解釋一下str3的原因嗎? – user2014 2014-12-13 16:15:23

0

==運算符僅用於java中的引用變量。例如,如果您要比較字符a1a2,則可以使用==運算符,因爲char類型在Java中的大多數IDE中突出顯示。要檢查兩個字符串是否相等,可以使用.equals().equalsIgnoreCase()來比較字符串。這是因爲字符串是對象而不是原語,並且需要在類中使用它們自己的方法來測試字符串是否相同。

對於第一個System.out.println();聲明,您將使用System.out.println(str1.equals(str2));System.out.println(str1.equalsIgnoreCase(str2));

對於第二個System.out.println();聲明,您可以使用System.out.println(str1.equals(str3));System.out.println(str1.equalsIgnoreCase(str3));

相關問題