五、int和Integer有什麼區別?
阿新 • • 發佈:2018-12-18
一.基本使用對比
int是基本資料型別,作為成員變數的時候預設值為0。
Integer是int的包裝類,作為成員變數的時候預設值為null。
int不需要例項化可以直接使用,Integer需要例項化以後才可以使用。
int是直接存放數值的,而Integer是對物件的引用。
二.比較大小處理(使用==)
一般是比較相同的數:
1.一個int和一個Integer:
int a=5;
Integer b=5;
a==b;//true
Integer物件會自動拆箱和int資料比較大小。返回true。
2.兩個new出來的Integer:因為都是new出來的物件,所以實際上是兩個不同的物件,不相等。返回false。
Integer a=new Integer(5);
Integer b=new integer(5);
a==b;//false
3.一個new一個不new:實際上還是物件的比較,應為不同的物件是不相等。返回false;
Integer a=5;
Integer b=new Integer(5);
a==b;//false
4.兩個都不new
第一種情況:值在-128-127之間,返回true
Integer a=5;
Integer b=5;
a==b;//true
第二種情況:值不在以上範圍之間,返回false
Integer a=300; integer b=300; a==b;//false
原因:當數值在-128-127之間的時候,Integer a=5;會翻譯成為Integer i = Integer.valueOf(5)。而java API中對Integer型別的valueOf的定義如下,對於-128到127之間的數,會進行快取,Integer a=5時,會將5進行快取,下次再寫Integer b= 5時,就會直接從快取中取,就不會new了。