Java中==和equals和區別詳解+案例

來源:互聯網
上載者:User

標籤:byte   inf   字串   基本資料   boolean   圖片   img   integer   資料   

一開始遇見==和equals我也是分不清,後來看了很多部落格,收益匪淺,

擔心以後給忘了,所以寫下這個,以後複習可以用。

(有哪裡寫得不對的,希望可以留言幫忙改進,大家一起共同進步)

一、Java資料類型一共分為兩大類:基礎資料型別 (Elementary Data Type)、引用資料類型:

  1.基礎資料型別 (Elementary Data Type):

    整數型:

      整型:byte、short、int、long

     浮點型:float、double

    字元型:char

    布爾型:boolean

  2.引用資料類型:

    數組、類、介面

二、基礎資料型別 (Elementary Data Type)的比較

   基本類型的比較只能用==比較,沒辦法用equals比較,沒有該方法,封裝類才有

  

三、基本類型和封裝類型的比較

  裝箱:int-->Integer,拆箱:Integer-->int

  1.基本型和基本型封裝型進行“==”運算子的比較,基本型封裝型將會自動拆箱變為基本型後再進行比較

  2.關於equals的比較,我們先看下它的源碼

  這個是Object的equals源碼,很明顯是比較兩個的地址是否一樣

  

  這個是Integer的equals,說明他重寫了object的源碼,他是先比較類型是否一樣,

  如果類型不一樣直接返回false,如果類型一樣,他會先進行拆箱後再比較。

  

  int和Integer的比較執行個體

    

四、String類型的比較

   1.String關於==的比較是看他的地址是不是一樣,但是String他比較特殊,他有個字串常量池,直接定義字串(不是new的情況)

   他會先到字串常量池看之前有沒有,有就直接指向之前的。沒有就建立(指的是new)。

    2.equals:因為String繼承了Object的equals並重寫了equals.看下面的源碼,我們可以看出來,他是先判斷是不是同一對象,如果是直接返回true,

     如果不是他就比較內容是否一致。

    

    String比較執行個體

  

五、參考型別的比較

  參考型別的比較最直接無論是==還是equals都是比較地址

  這是equals源碼

  

   比較案例

   

    

Java中==和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.