經過幾天的學習,終於對equals的用法有了比較全面的認識,並做一個總結。
1.equals的本意-即在Object物件中定義的equals()方法有什麼樣的意義。
(此處先附上==的作用,後面仍有敘述。因為==和equals()方法的關係是很密切的,後面有我自己的看法。
==用於比較引用和比較基本資料型別時有不同的功能:
比較基本資料型別,若兩個值相同,結果為true
而在比較引用時,若引用指向記憶體中的相同對象,結果為true)
boolean equals(Object obj)
其比較規則為:當參數obj引用的物件與目前物件為同一物件時,就回傳true,否則回傳false.
public class Fish {
color;
this.color = color;
getWeight() { return weight;
}
public void setWeight(int weight) {
}
public void setColor(String color) {
this.color = color;
public class EqualsTest {
public static void main(String[] args) {
System.out.println(f1.equals(f2));
System.out.println(f1.equals(f2)); System。 —
false
false
由此可見,equals()方法的本意為確定兩個物件的參考是否相同。
2.而JDK類別中有一些類別覆寫了oject類別的equals()方法,比較規則為:如果兩個物件的型別一致,且內容一致,則傳回true,這些類別有:
java.io. file,java.util.Date,java.lang.string,包裝類別(Integer,Double等)
public class EqualsTest {
);
String s2=new String("sss");
System.out.println(s1==s2);
}
— ———————運行結果為——————
true
由此知道,在String中equals()方法被進行了覆蓋,使其意義變為比較兩個對象的內容是否一致
3.如果我們要自己覆蓋equals()方法,讓其比較內容或者有別的使用方法(當然我們一般都是用於比較內容的,但是覆蓋的方法中真正的實現究竟是什麼樣的,誰知道O(∩_∩)O~)
public class Fish {
private int weight;
private String color;
public Fish(int Weight, String color) {
this.color = color;
public int hashCode() {
Final int prime = 31;
整數結果 = 1 ;
結果= prime * 結果+ ((color == null) ? 0 : color.hashCode());
@Override
public boolean equals(Object obj){
If(this == obj)
回傳true;
如果(obj == null)
回傳false;
If(getClass()!=obj.getClass())
回傳false;
魚類其他 = ( Fish) obj;
if (color == null) {
return false;
} else if (!color.equals(other.color))
回傳 false ;
如果(重量!= other.weight)
return false;
return Weight;
}
public void setWeight(int Weight) {
this.weight =體重;
}
public String getColor() {
return color;
}
}
public class EqualsTest {
公共靜態無效主(String[] args ) {
Fish f2 = new Fish(1, "blue"); ) ;
System.out .println(f1.equals(f2));
}
——————運行結果為——————
equals()方法和hashcode()方法,實作equals()方法刪除的本意,以下不是比較兩個物件的引用是否相同,而是比較其內容是否相同。我自己想到的一些東西。基本的侵犯而==是基本運算符中的一個,它的作用:用於比較引用和比較基本資料類型時具有不同的功能:
比較基本資料類型,如果兩個值相同,則結果為true而在比較引用時,如果引用指向內存中的相同對象,結果為true
而equals()方法可以,我們推測知道,作為其中的實現所使用的肯定是==推斷。 ()本意不等於==進行物件比較時候的作用嗎。它限制了我們的表達方式。
更多Java中的equals()文章相關請關注PHP中文網!