Integer 自动拆箱封箱
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;