天天看點

Java中的==、equals及hashCode

java中的== 和equals連個比較運算符是比較容易混淆的.

我們現在分别來談談什麼是 == 什麼是equals

==

java中的==可以用于基本類型及引用類型;

當用于基本資料類型的時候,其意義在于""==""臉變得值是否相等.

輸出:

true

=============我是分隔符=============

當==符号用于引用類型的時候,其意義在于 比較雙方對象是否相同

當然,對于string a = ""啊""和inreger i = 1對象的建立方式,==比較的方式你也可以姑且看作是值得比較.

本質:

在java中,""==""比較變量是,比較的就是系統"棧"中的内容,也就是棧中的值

基本資料類型在棧中的值就是其内容,而對象類型在棧中存儲的是一個引用位址,這個位址就是對象在堆中的位置.對于"=="需要記住的就是以上内容

equals:

首先你需要名曲的就是基本資料類新沒有equals方法,

第二,你需要明白的是,所有的類都有equals方法,因為一個類如果沒有定義equals方法,它将預設繼承object中的equals方法,傳回值與==方法相同.

java.lang包中的object類有public boolean equals(object obj)方法,它比較兩個對象是否相等

boolean equals(object o){

return this==o;

}

是以,如果你沒有覆寫該方法,那麼class a == class b 與 class a.equals(class b)的意義是一樣的的;(注意:string和基本包裝類型已經覆寫了該方法)

下面是代碼的參考:

其詳細情況可以參考:

<a href="http://blog.csdn.net/u010940300/article/details/44153967">http://blog.csdn.net/u010940300/article/details/44153967</a>