1.Integer是java的包裝類硫朦,int是一種數(shù)據(jù)類型
2.Integer變量必須實例化才能使用房交,int變量則不需要
3.Integer對象的默認值是null试疙,而int的默認值是0
4.new一個Integer對象時宝磨,實際上是生成一個指針指向該對象;而int是直接存儲數(shù)據(jù)
一嘱根、由于Integer變量實際上是對一個Integer對象的引用,所以兩個通過new生成的Integer變量永遠是不相等的(因為new生成的是兩個對象巷懈,其內(nèi)存地址不同
Integer i =new Integer(100);
Integer j =new Integer(100);
System.out.print(i == j); //false
二该抒、Integer變量和int變量比較時,只要兩個變量的值是向等的顶燕,則結(jié)果為true(因為包裝類Integer和基本數(shù)據(jù)類型int比較時凑保,java會自動拆包裝為int冈爹,然后進行比較,實際上就變?yōu)閮蓚€int變量的比較)
Integer i =new Integer(100);
int j =100欧引;
System.out.print(i == j); //true
三频伤、非new生成的Integer變量和new Integer()生成的變量比較時,結(jié)果為false芝此。(因為非new生成的Integer變量指向的是java常量池中的對象憋肖,而new Integer()生成的變量指向堆中新建的對象,兩者在內(nèi)存中的地址不同)
四癌蓖、對于兩個非new生成的Integer對象瞬哼,進行比較時,如果兩個變量的值在區(qū)間-128到127之間租副,則比較結(jié)果為true坐慰,如果兩個變量的值不在此區(qū)間,則比較結(jié)果為false