Java中的equals學習小結

來源:互聯網
上載者:User

Java中的equals是十分重要的,和= =要區別開來,最近在看孫衛琴的JAVA物件導向編程一書,覺得對其闡述寫的不錯,所以現在小結其
主要內容,而且要將 = =和 equals列為重要的對比概念來學習

1、聲明格式
    public  boolean equals(Object obj)

   其比較規則為:當參數obj引用的對象與當前對象為同一個對象時,就返回true,否則返回false.

比如以下兩個對象animal1和animal2,引用不同的對象,因此用==或equals()方法比較的結果為false;而animal1和animal3變數引用同一個DOg對象,因此用= =或者equals()方法比較的結果為true.

   Animal  animal1=new Dog();
   Animal  animal2=new  Cat();
   Animal animal3=animal1;

則animal1==animal2   (FALSE)
   animal1.equals(animal2)  (false)

   animal1==animal3   (true)
   animal1.equals(animal3)   (true)

而JDK類中有一些類覆蓋了oject類的equals()方法,比較規則為:如果兩個對象的類型一致,並且內容一致,則返回true,這些類有:
java.io.file,java.util.Date,java.lang.string,封裝類(Integer,Double等)

比如
Integer  int1=new Integer(1);
Integer int2=new Integer(1);

String str1=new String("hello");
String str2=new String("hello");

int1==int2   輸出:false,因為不同對象
int1.equals(int2)   輸出:TRUE

str1==str2   (false)
str1.equals(str2)   (true)
  當然,可以自訂覆蓋object類的equals()方法,重新定義比較規則。比如,下面Person類的equals()比較規則為:只要兩個對象都是Person類,並且他們的屬性name都相同,則比較結果為true,否則返回false

public class Person{
   private String name;
   public Person(String name) 
  {
     this.name=name;
   }
public boolean equals(Object o)
{
  if (this==0) return true;
if (!o instanceof Person) return false;
final Person other=(Person)o;
 if (this.name().equals(other.name()))
    return true;
else
  return false;
}

}

注意,在重寫equals方法時,要注意滿足離散數學上的特性

1、自反性   :對任意引用值X,x.equals(x)的傳回值一定為true.
2    對稱性:   對於任何引用值x,y,若且唯若y.equals(x)傳回值為true時,x.equals(y)的傳回值一定為true;
3    傳遞性:如果x.equals(y)=true, y.equals(z)=true,則x.equals(z)=true
4   一致性:如果參與比較的對象沒任何改變,則對象比較的結果也不應該有任何改變
5   非空性:任何非空的引用值X,x.equals(null)的傳回值一定為false

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.