Integer 自動拆箱封箱

currentTimeMillis發表於2024-04-24

Integer 自動拆箱封箱驗證。

先寫一份Integer Double 程式碼

思考一:這幾個值 true ? false ?

結果是:

true

false

false

false

思考二:為什麼第一個為true,其他都是 false ?

理由在這裡:

Integer

自動拆箱和裝箱判斷 if (i >= IntegerCache.low && i <= IntegerCache.high)

-128至127之間的賦值,Integer物件是在IntegerCache.cache產生,會複用已有物件

這個區間之外的所有資料,都會在堆上產生,並不會複用已有物件。

Double 沒有拆箱裝箱判斷。

思考三:這個拆裝箱區間能改嗎?

答:能,可以透過啟動JVM時使用系統屬性來更改快取的最大值。

-Djava.lang.Integer.IntegerCache.high=200

思考四:最小值能改嗎?

答:最小值改不了,因為最小值 static final int low = -128;

相關文章