變量儘量不要定義爲包裝類,儘量使用基本類型。
int和Integer的區別
1.存儲原理不一樣:
int:屬於簡單類型,不存在“引用”這個概念;其數據是存儲在棧空間中;
Integer:屬於繼承自Object的類,是按照java存儲對象的內存模型來存儲的;引用存儲在棧中,對象數據存儲在堆中;
基於這個原理不同,所以在進行參數傳遞的時候,int是值傳遞,其在棧中的數據不可變;
而Integer類型是引用傳遞,引用指向的內存地址中的數據是可以變化的,但是棧中的引用是不變的;
2.缺省值不一樣
int的初始化值是0 ,Integer初始化的值是null。
你不能把null值賦給int;
3.泛型支持不一樣
泛型支持Integer,並不支持int
如:
ArrayList list = new ArrayList();
你不能在泛型中寫int
4.行爲不一樣
int a =10;
Integer b= new Integer(10);
在方法調用中:
a是基本類型,並沒有什麼方法可言;因爲方法是類的特性。
b有很多方法,因爲方法是對象中定義的;一些轉換操作,如轉爲字符串等
總之,兩者還是有比較大的區別。
public static void main(String[] args) {
Integer i =329;
Integer m= new Integer(329);
int n = 329;
Integer x =329;
System.out.println(i==m);
System.out.println(i==n);
System.out.println(i==x);
}
運行結果爲false true false