先說結論:
1坏逢、== 永遠是用來比較內存中的地址的淤袜。
2、基本類型 與包裝類型 使用 == 比較稚铣,包裝類型會拆箱
3箱叁、兩個包裝類型不能使用 == 比較
4、兩個包裝類型使用equals比較惕医,先比較類型耕漱,再比較值
5、包裝類型與基本類型使用equals比較抬伺,先將基本類型裝箱再比較
論點4驗證:
論點2驗證:
可以看到螟够,對于Long l =129L; 先進行裝箱,對于l ==i1,因為i1是基本類型妓笙,對l進行拆箱若河。
論點5驗證:
論點3驗證:
論點1驗證:
常量(基本數據類型和字符串類型),了解到java虛擬機可知道寞宫,會存儲在常量池萧福,且基本數據類型包裝類都是final類型,不可變更辈赋。直接使用 == 其實也可以理解為比較常量的地址统锤。
對于基本數據類型在傳參時,其實也是傳句柄(handle),但因為傳的是final類型炭庙,故賦值時,不會改變之前的值煌寇。