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中文網其他相關文章!