中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中判斷對象是否相等的方法

發布時間:2020-06-25 15:53:18 來源:億速云 閱讀:389 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關java中判斷對象是否相等的方法,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

1、equals的作用及與==的區別

equals被用來判斷兩個對象是否相等。

equals通常用來比較兩個對象的內容是否相等,==用來比較兩個對象的地址是否相等。

equals方法默認等同于“==”。

Object類中的equals方法定義為判斷兩個對象的地址是否相等(可以理解成是否是同一個對象),地址相等則認為是對象相等。這也就意味著,我們新建的所有類如果沒有復寫equals方法,那么判斷兩個對象是否相等時就等同于“==”,也就是兩個對象的地址是否相等。

Object類中equals的方法實現如下:

public boolean equals(Object obj) {
        return (this == obj);
    }

但在我們的實際開發中,通常會認為兩個對象的內容相等時,則兩個對象相等,equals返回true。對象內容不同,則返回false。

所以可以總結為兩種情況

1、類未復寫equals方法,則使用equals方法比較兩個對象時,相當于==比較,即兩個對象的地址是否相等。地址相等,返回true,地址不相等,返回false。

2、類復寫equals方法,比較兩個對象時,則走復寫之后的判斷方式。通常,我們會將equals復寫成:當兩個對象內容相同時,則equals返回true,內容不同時,返回false。

舉個例子:

public class EqualTest {
public static void main(String[] args) {
Person p1 = new Person(10,"張三");
Person p2 = new Person(10,"張三");
System.out.println(p1.equals(p2));
}
}
class Person{
int age;
String name;
public Person(int age, String name) {
super();
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

Person未復寫equals方法,則默認使用了Object中的equals,即為兩個對象(p1和p2)的內存地址判斷,p1和p2很明顯內存地址不同,所以輸出結果很明顯為false。

如果我們復寫equals方法呢?我們認為名字和年齡一樣的就是同一個人,那么p1和p2都表示10歲的張三,這兩個對象應該是相等的。復寫的equals方法如下:

@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}

同樣的,執行上述用例,得到的結果是true。

BTW:如果equals方法返回true,那么==是否也是true?

不一定是true。equals返回true有兩種可能,一種是兩個對象地址相同,一種是兩個對象內容相同。當內容相同時,地址可能不同,所以==比較的結果可能為false。

我們把main方法加上對==的判斷,如下:

public static void main(String[] args) {
Person p1 = new Person(10,"張三");
Person p2 = new Person(10,"張三");
System.out.println(p1.equals(p2));
System.out.println(p1 == p2);
}

輸出結果很明顯 p1==p2的結果是false。

以上就是java中判斷對象是否相等的方法,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄平县| 专栏| 潮安县| 玛纳斯县| 丰镇市| 武乡县| 洱源县| 松潘县| 浦城县| 大宁县| 遵义县| 宝山区| 靖州| 龙海市| 泽库县| 乌兰浩特市| 宕昌县| 金湖县| 湛江市| 贵德县| 长春市| 通化市| 邵武市| 上虞市| 宁化县| 农安县| 新源县| 德令哈市| 白河县| 泾源县| 元谋县| 金堂县| 东乡县| 厦门市| 视频| 丰台区| 韶关市| 抚宁县| 剑河县| 金乡县| 垦利县|