- int是基本數據類型,而integer是int的包裝類對象,簡單的來說Integer類把int類型變成對象,以便于能夠使用在基本數據類型不能使用的場合,例如需要往ArrayList,HashMap中存放數據的時候。而這種情況下系統會使用自動裝箱拆箱來把int轉化成integer對象。
public static void main(String[] args) {
ArrayList a = new ArrayList();
int aa = 11;
Integer aaa = new Integer(aa);
a.add(aa); //在Java1.5之前沒有拆箱裝箱機制時,該用法是錯的
a.add(aaa);
}
- int在初始化的時候默認賦值為0,integer對象在初始化的時候默認賦值為null。
由于自動裝箱拆箱機制的存在,integer和int在一些情況下能夠被自動轉化。
public static void main(String[] args) {
Integer a = 4;
Integer b = 4;
Integer c = 1111;
Integer d = 1111;
System.out.println(a == b); //true
System.out.println(c == d); //false
}
自動裝箱拆箱使用了享元模式的設計,在一個byte范圍(-128 ~127)內的值被裝箱成integer對象的時候會在內存中被重新復用。
與此類似的是,當程序第一次使用某個字符串直接量的時候,Java會使用常量池來緩存該字符串直接量,如果程序后面的部分需要使用該字符串直接量的時候,Java會使用常量池中的字符串直接量。
public static void main(String[] args) {
String a = "aaaa";
String b = "aaaa";
String c = "aa" + "aa";
System.out.println(a == b); //true
System.out.println(a == c); //true
}
總結
如果需要數值進行加減乘除計算的時候,就需要使用int,這個時候使用integer對象也是可以的,但是會消耗系統資源。
如果是需要對象來處理,那就應該聲明一個integer對象,或者使用Integer方法把int數值轉化成integer對象來處理。