簡述java中equals()方法和==的區別,javaequals

來源:互聯網
上載者:User

簡述java中equals()方法和==的區別,javaequals

==equals的主要區別是:

==:

  • ==常用於比較原生類型(基礎資料型別 (Elementary Data Type)):byte,short,char,int,long,float,double,boolean,比較的是他們的值。
  • 若用==來比較兩個對象,則比較的是這兩個對象的記憶體位址。因此,除非是同一個new 出來的對象,比較結果為true,不同對象用==比較都是false。
  • 但是,對於擁有緩衝機制的對象,例如Integer、Byte 、Short 、Long、 Character對象(目前就知道這幾個對象),在其緩衝範圍內,是可以用==比較出正確的結果的。具體範圍是:Integer、Byte,Short,Long 固定範圍是:-128 到 127;Character 固定範圍是 0 到 127。除了 Integer 可以通過參數改變範圍外,其它的都不行。 具體可見我轉寄的博文理解Java Integer的緩衝策略【轉】

equals()方法:

在Object中的基類中定義了一個equals的方法,這個方法的初始行為是比較對象的記憶體地 址,源碼如下:

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

因此,對於沒有重寫過equals()方法的對象來說,使用equals()進行比較和用==進行比較效果相同,都是比較記憶體位址

但在一些類庫當中這個方法被覆蓋掉了,如String,Integer,Date在這些類當中equals有其自身的實現,而不再是比較類在堆記憶體中的存放地址了。因此,當我們建立自己的類的時候,若要將此類進行比較,一定要重寫equals()方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.