關於Integer自動拆包

2021-08-19 16:14:41 字數 948 閱讀 7599

integer i = 1;

integer j = 1;

i==j 猜一猜這個答案是什麼?

大夥肯定認為是true吧,也沒錯,那當i和j為下面的值時

integer i = 129;

integer j = 129;

i==j 大家再猜一猜這個答案是什麼?

輸出為false;

具體原因是

public

static integer valueof(string s) throws

numberformatexception

public

static integer valueof(int

i)

都是返回integercache 這個值

private static class integercache catch( numberformatexception nfe)

}high = h;

cache = new integer[(high - low) + 1];

int j = low;

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把-128到127(可調)的整數都提前例項化了。 原來你不管建立多少個這個範圍內的integer用valueof出來的都是同乙個物件。

解決方案:

可用integer .intvalue();來比較值;

或者呼叫 i.equals(j)

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

Integer類的自動拆箱和裝箱

一 自動裝箱 自動裝箱就是自動將基本資料型別轉換為包裝器型別。integer a 200 這句 經編譯後其實為 integer a integer.valueof 200 二 自動拆箱 拆箱就是自動將包裝器型別轉換為基本資料型別。integer a 10 int b a 拆箱這段 經過編譯後為 in...