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;