關於equals和「 」的詳解

2021-08-30 14:51:11 字數 1012 閱讀 8875

首先,equals,equals最常用的是在string下呼叫,用來比較兩個字串是否相同。但實際上equals是object中的方法,string對其進行了覆寫。object中的equals方法是用來比較兩個物件相等的,但是其預設的是按位址進行比較

,並不能對內容進行比較。string覆寫了此方法用來對內容進行比較。所以原來的equals與「==」可以說是在一定程度上是相同的。還有一點,在string中的equals方法比較的字串,是大小寫敏感的,即大小寫相同的且內容一致的才會被equals判斷換為相同,否則不相同。

關於「==」,當我們使用==來比較基本資料型別時,比較的是其值,只要他們的值相同,==就可以返回true。當用==比較引用型別時,比較的是的位址,二者是否引用同乙個堆記憶體空間,如果是,則返回true。即便二引用變數引用的堆記憶體中的內容完全相同,只要是不同的兩個堆記憶體,也只會返回false。

如果我們自定義了某個類,且此類需要進行對像是否相同的比較,那我們需要覆寫equals方法,而不能直接呼叫object的equals方法。

覆寫equals判斷物件是否相同需要注意以下幾點:

1.equals的引數型別應該為object,object可以接收一切型別的物件;

2.接受之可以先通過==進行判斷,看二物件應用的位址是否相同,相同則直接返回true;

3.在以上不成立的情況下進行進一步判斷。通過instanceof判斷此物件是否是此類的例項。同乙個類的例項才可以進行比較,不同類的例項自然不會相同。

4.最後對兩物件的每個屬性的值進行比較,相同則兩物件相同,不同則兩物件不同。

現按以上思路覆寫equals方法,**如下:

class person public boolean equals(object obj) if(!(obj instanceof person)) person per = (person)obj; if(this.name.equals(per.name)&&(this.age==per.age)) //判斷換二者的屬性值是否相等 else } } public class equalsdemo }

equals和 的區別詳解

大家在刷面試題的時候可能都刷到過equals和 之間的區別?簡單來說答案就是 equals和 比較的都是位址,只不過許多類中都重寫了equals方法,用來比較他們之間的值。接下來我們就詳細看看,他們之間究竟有什麼區別。一 堆和棧的區別 舉個例子說明一下,string a new string 123...

和 equals()的不同(詳解!!!)

1 的比較 兩部分 1 基本資料型別的比較 在基本型別中比較的是內容,相同返回true,不同返回false。如 int i 10 int j 10 system.out.println i j true 2 引用型別的比較 public class test 先宣告一點 字串建立物件之後,在堆記憶體...

關於 和equals的區別

1 對於字串變數來說,使用 和 equals 方法比較字串時,其比較方法不同。比較兩個變數本身的值,即兩個物件在記憶體中的首位址。equals 比較字串中所包含的內容是否相同。2 對於非字串變數來說,和 equals 方法的作用是相同的都是用來比較其 物件在堆記憶體的首位址,即用來比較兩個引用變數是...