Java中==和equals和區別詳解+案例
一開始遇見==和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和區別詳解+案例