1. 程式人生 > >Java中==和equals和區別詳解+案例

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

兩個 布爾型 整數 返回 boolean 和equal clas 定義 true

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

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

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

一、Java數據類型一共分為兩大類:基本數據類型、引用數據類型:

  1.基本數據類型:

    整數型:

      整型:byte、short、int、long

     浮點型:float、double

    字符型:char

    布爾型:boolean

  2.引用數據類型:

    數組、類、接口

二、基本數據類型的比較

   基本類型的比較只能用==比較,沒辦法用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和區別詳解+案例