分以下幾步進行討論
一、equals方法對於普通的類是比較引用是否相等,和==效果一樣,因為equals 方法是繼承object下來的,我們看下
object中equals方法的寫法:
public boolean equals(object obj)
二、對於基本資料型別的包裝類,euqals方法源**如下:integer舉例:
包裝類中重寫了equals方法
//比較的是值,不是引用,對於基本資料型別的包裝類「==」比較的才是引用
public boolean equals(object obj)
return false;
}對於基本資料型別,那麼==比較的就是值了,這個都很好理解
那麼我們看一下string這個類中的equals方法,string中也重寫了equals方法,具體**如下:
public boolean equals(object anobject)
if (anobject instanceof string)
return true;
}} return false;
}
string這個類的equals方法比較特殊,它先比較引用,如果引用相等,那麼返回值就是true,如果引用不相等,
那麼再比較值,如果值相等,那麼返回值也是true,只有當引用和值都不相等的情況下,返回的才是false
關於string中的intern()方法,此方法返回的始終是string pool中的字串,我也在以前的文章說過,string的建立過程,如果string pool中不存在此字串,那麼建立乙個新的返回,如果有的話,就直接返回此物件,
遵循對於任何兩個字串s
和t
,
當且僅當s.equals(t)
為true
時,s.intern() == t.intern()
才為true
。
當然如果你寫乙個自己的類的話,也可以自己重寫equals方法,用自己的方法來實現自己想要的功能
equals比較物件
對事物的乙個分類,他們具有相同的屬性和動作。世間萬物皆物件。類是物件的抽象。物件是類的實體。dog dog1 new dog 旺財 dog dog2 new dog 大黃 public class dog 現在有這兩個物件,dog類中有string name和int id兩個屬性,我們如何使用equ...
equals比較與等值比較
equals equals比較是兩個物件之間的比較,如果呼叫equals這個方法的物件為null,則會報空指標異常。equals比較的邏輯是 先判斷兩個物件的型別是否相等,在判斷兩個型別的屬性值是否相等,若都滿足,則這兩個物件是相對。等值 等值比較如是基本資料型別和引用型別之間的比較,則直接編譯不通...
和equals的比較
基本的資料型別都放在stack 棧 中 引用型別變數放在stack 棧 中,真正的內容放在heap 堆 中。堆 首先堆是動態分配的,jvm並不會自動釋放這部分記憶體。只用等待系統的gc來進行記憶體 棧 是在類載入中有系統靜態分配的,而且分配時按照記憶體的高低位址分配。這部分記憶體系統會自動進行釋放。...