int和Integer的區別

weixin_30924079發表於2018-05-28

1、Integer是int的包裝類,int則是java的一種基本資料型別 
2、Integer變數必須例項化後才能使用,而int變數不需要 
3、Integer實際是物件的引用,當new一個Integer時,實際上是生成一個指標指向此物件;而int則是直接儲存資料值 
4、Integer的預設值是null,int的預設值是0

延伸: 

Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false,因為引用的地址不同

//Integer變數和int變數比較時,只要兩個變數的值是相等的
Integer i = new Integer(100);
int j = 100;
System.out.print(i == j); //true

//非new生成的Integer變數和new Integer()生成的變數比較時,結果為false。
//因為非new生成的Integer變數指向的是java常量池中的物件,
//而new Integer()生成的變數指向堆中新建的物件,兩者在記憶體中的地址不同
Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false

//對於兩個非new生成的Integer物件,進行比較時,
//如果兩個變數的值在區間-128到127之間,則比較結果為true(java對於-128到127之間的數,會進行快取,不會重新new),
//如果兩個變數的值不在此區間,則比較結果為false
Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true

Integer i = 128;
Integer j = 128;
System.out.print(i == j); //false

 

轉載於:https://www.cnblogs.com/qionglouyuyu/p/10882026.html

相關文章