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; 

 

posted @ 2024-04-24 21:59  currentTimeMillis  阅读(1)  评论(0编辑  收藏  举报