java中int和Integer對比的一些坑

Integer與int類型的關係

Integer是int的包裝類,int的默認值是0,而Integer的默認值是null(jdk1.5的新特性 自動裝箱和拆箱,Integer.valueOf() 和xx.intValue() ),

需要注意的是Integer裏面默認的緩存數字是-128-127,

1、Integer與Integer相互比較,數據在-128-127範圍內,就會從緩存中拿去數據,比較就相等;如果不在這個範圍,就會直接新創建一個Integer對象,使用 == 判斷的是兩個內存的應用地址,所以自然不相等。

2、Integer和int類型相比,在jdk1.5,會自動拆箱,然後比較棧內存中的數據,所以沒有不想等的情況

int跟int比較

int數據類型,都是在棧內存中存儲,如果這個數字在棧內存中存在就會直接指向這個內存地址,如果不存在,就會重新開闢內存空間,所以int和int類型的比較,相同的值不會存在內存不等的情況

八個基本數據類型不能看作對象(這點很特殊),存放在棧中。棧內操作速度快,創建銷燬很容易

int跟Integer比較

會自動拆箱,變成int與int對比

Integer跟Integer比較

  在-128~127的範圍內,==會相等,獲取的cache的地址

  不在上述範圍內,會去new一個對象對比

  直接new對象的話,肯定不等於

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