Integer自動裝箱的規則

2021-10-24 08:18:18 字數 1704 閱讀 4057

源**:

//直接賦值

integer m1 =

128;

integer m2 =

128;

system.out.

println

(m1 == m2)

;//false

system.out.

println

(m1.

equals

(m2));

//true

//顯式呼叫構造器

integer m3 =

newinteger(20

);integer m4 =

newinteger(20

);system.out.

println

(m3 == m4)

;

反編譯後**:

//呼叫integer.valueof

integer m1 = integer.

valueof

(128);

integer m2 = integer.

valueof

(128);

system.out.

println

(m1 == m2)

; system.out.

println

(m1.

equals

(m2));

//呼叫構造器

integer m3 =

newinteger(20

);integer m4 =

newinteger(20

);system.out.

println

(m3 == m4)

;

可以看出

public

static integer valueof

(int i)

構造乙個新分配的integer物件,該物件表示指定的int值。

public

integer

(int value)

private

static

class

integercache

catch

( numberformatexception nfe)

} high = h;

//初始化cache陣列大小為 最大值個數 + 最小值個數 + 0佔乙個位置

cache =

newinteger

[(high - low)+1

];int j = low;

//將整數區間[low, hight]內的整數放入cache陣列

for(

int k =

0; k < cache.length; k++

) cache[k]

=new

integer

(j++);

// range [-128, 127] must be interned (jls7 5.1.7)

assert integercache.high >=

127;

}private

integercache()

}

Integer自動拆裝箱

integer a new integer 3 int b 3 integer c new integer 3 輸出 true system.out.println a b a b 輸出 false system.out.println a c a c 雖然包裝型別的變數是引用資料型別,但包裝類的例...

Integer自動拆箱 自動裝箱

package com.tmt.test code public class zhuangchaixiiangtest 這個的運算結果是什麼呢?new integer 128 int 128 true new integer 128 new integer 128 false integer 127...

Integer自動拆箱裝箱

integer a new integer 3 integer b 3 int c 3 system.out.println a b system.out.println a c 問題一 上面的輸出為啥?答案 false true 解答 第乙個是兩個引用之間的比較,他們沒有引用同一物件,所以為fal...