int和Integer的區別

2022-09-03 13:00:13 字數 1045 閱讀 9482

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會快...