1. 程式人生 > >五、int和Integer有什麼區別?

五、int和Integer有什麼區別?

一.基本使用對比

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了。