Integer填坑

在-128~127的Integer值並且以Integer x = value;的方式賦值的Integer值在進行==和equals比較時,都會返回true,因爲Java裏面對處在在-128~127之間的Integer值,用的是原生數據類型int,會在內存裏供重用,也就是說這之間的Integer值進行==比較時只是進行int原生數據類型的數值比較,而超出-128~127的範圍,進行==比較時是進行地址及數值比較。當Integer類型的值超出這個範圍,會重新new一個對象,這裏的不等的原因是地址不等。。。。

 

==和equals的區別,==是進行地址及值比較,無法對==操作符進行重載,而對於equals方法,Integer裏面的equals方法重寫了Object的equals方法,查看Integer源碼可以看出equals方法進行的是數值比較。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章