Java自動裝箱解箱問題&&int和Integer類型==比較問題

 java在5.0開始,基本類型和封裝類型之間有了自動的轉換。

  1. Integer i1=1;//1轉變爲new Integer(1),叫自動裝箱 
  2. Integer i2=1
  3. int i3=i1+i2;//i1 i2自動轉化爲int類型,叫自動解箱 
  4. System.out.println(i1==i2);//true 

這裏我們可以看到,Integer的構造方法可以不用了。

自動裝箱時,-128--127有緩衝池,是同一個對象,如果不在這個範圍內,將會新建對象,所以對象會不同。

 

  1. Integer i4=128
  2. Integer i5=128
  3. System.out.println(i4==i5);//false 

 

 

用==比較時,如果兩邊一個int一個Integer,自動解箱後再比較。

  1. int i6=128
  2. System.out.println(i4==i6);//true 

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