首頁 >Java >Java基礎 >java中判斷是否相等的方法

java中判斷是否相等的方法

尚
原創
2019-11-23 09:17:393853瀏覽

java中判斷是否相等的方法

java中的基本資料型態判斷是否相等,直接使用」==」就行了,相等回傳true,否則,回傳false。

obj1==obj2 判斷是obj1,obj2這兩個引用變數是否相等,也就是它們所指向的物件是否為同一個物件。言下之意就是要求兩個變數所指記憶體位址相等的時候,才能傳回true,每個物件都有自己的一塊內存,因此必須指向同一個物件才回傳ture。

如果想要自訂兩個物件(不是一個對象,也就是這兩個物件分別有自己的一塊記憶體)是否相等的規則,那麼必須在物件的類別定義中重寫equals()方法,如果不重寫equals()方法的話,預設的比較方式是比較兩個物件是否為同一個物件。

在Java API中,有些類別重寫了equals()方法,它們的比較規則是:當且僅當該equals方法參數不是null,兩個變數的型別、內容都相同,則比較結果為true。

這些類別包括:String、Double、Float、Long、Integer、Short、Byte、、Boolean、BigDecimal、BigInteger等等,太多太多了,但是常見的就這些了,具體可以查看API中類別的equals()方法,就知道了。

重寫equals()方法的步驟一般如下:

1、先用「==」判斷是否相等。

2、判斷equals()方法的參數是否為null,如果為null,則傳回false;因為目前物件不可能為null,如果為null,則不能呼叫其equals()方法,否則拋java.lang.NullPointerException異常。

3、當參數不為null,如果兩個物件的執行時間類別(透過getClass()取得)不相等,傳回false,否則繼續判斷。

4、判斷類別的成員是否對應相等。往下就隨意發揮了。

範例:

public class Dog {
    private int age;
    private String name;
    public Dog(int age,String name){
        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;
    }
    @Override
    public boolean equals(Object obj) {
        if(obj==null){
            return false;
        }
        if(this==obj){
            return true;
        }
        if(obj instanceof Dog){
            Dog dog=(Dog)obj;
            if(dog.age==this.age&&dog.name.equals(this.name)){
                return true;
            }else{
                return false;
            }
        }
        return false;
    }
    public static void main(String[] args){
        Dog dog1=new Dog(12,"wangcai");
        Dog dog2=new Dog(12,"wangcai");
        Dog dog3=new Dog(16,"wangcai");
        System.out.println(dog1.equals(dog2));//true
        System.out.println(dog1.equals(dog3));//false
    }}

更多java知識請關注java基礎教學

以上是java中判斷是否相等的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn