int是基本資料型別,integer是int包裝類。
integer變數必須例項化後才能使用,int可以直接使用
integer的預設值是null,int預設值是0
integer變數實際上是物件的引用,指向new的integer物件,int是直接儲存資料
一般我們生成物件都是object o = new objectz()
,但是對於integer
,我們可以integer a = 10
;
因為integer的自動裝箱功能。
通過反編譯工具我們可以看到class檔案下是
integer a = integer.valueof(10);
這就是基本資料型別的裝箱。
int b = a;
反編譯生成的class檔案是int b = a.intvlaue();
integer a = new integer(10);
integer b = new integer(10);
system.out.println(a == b);
system.out.println(a.equals(b));
結果前false,後true。
因為integer變數是對integer物件的引用,new了兩個物件,顯然記憶體位址不一樣,引用不一樣。
而integer重寫了equals方法,數值一樣就返回true。
public static void main(string args)
結果前true,後false
因為integer自動裝箱時對數值在-128到127的物件放入快取中,第二次就直接取快取中的資料而不會new。
public static void main(string args)
結果為true
因為integer型別和int比較時,會自動拆箱,化為基本型別資料比較。
算術運算會觸發自動拆箱
Integer 和int的區別
1.int是基本的資料型別,直接存數值 2.integer是int的封裝類 integer 是物件,用乙個引用指向這個物件 integer 是乙個類,是int的擴充套件,定義了很多的轉換方法。3.int和integer都可以表示某乙個數值 4.int和integer不能夠互用,因為他們兩種不同的資料...
int和Integer的區別
今天有個學弟問了我乙個面試題 integer a 128 integer b 128 system.out.println a b 輸出什麼?為什麼?說來慚愧,我的直覺告訴我會輸出flase,但突然間還想不出來為什麼。所以寫了個例子研究了下 public static void main strin...
int 和 Integer 的區別
int 和 integer 的區別 1 integer是int的包裝類 2 integer是類,預設值是null int是基礎資料型別,預設值是0.3 integer表示的是物件,用乙個引用指向這個物件 而int是基本資料型別,直接儲存數值。integer類在 128到127的快取問題 即jvm會快...