一、int是java中的基本數據類型,而Integer是int的包裝類java
二、Integer變量必須實例化以後才能使用,而int則不須要對象
三、Integer實際是對象的引用,而int是直接存儲數據值blog
四、Integer的默認值是null,int的默認值是0內存
實例:class
package com.lsj.test; public class test { public static void main(String[] args) { Integer a=new Integer(100); Integer b=new Integer(100); Integer c=100; Integer i=100; Integer j=128; Integer k=128; int d=100; System.out.println(a==b); System.out.println(a==c); System.out.println(a==d);
System.out.println(c==d); System.out.println(c==i); System.out.println(j==k); } }
運行結果:test
1.false
2.false
3.true
4.true
5.true
6.false
分析:一、Integer實際是對對象的引用,new生成兩個Integer變量,因爲內存地址不一樣,故始終不會相等,即結果爲false;變量
二、不是經過new生成的Integer變量和經過new生成的Integer變量進行比較時,結果爲false,由於非new生成的Integer變量會存放在常量池中,而經過new建立的Integer變量會存放在堆中。數據類型
三、int變量和Integer變量比較,其實是值的比較,只要兩個值相等,結果就爲true。由於此時java會自動拆包裝爲int。引用
四、同上述3的分析同樣數據
五、對於兩個非new生成的Integer對象時,只要兩個變量的值在-128和127區間內,且值相等的話,結果就爲true。換句話說,只要二者值不在-128-127區間以內,結果均爲false。
六、見上述5