Integer内部常量池实现详解
2018-09-20 本文已影响0人
rainy618
在Integer类的内部有一个IntegerCache的内部类,这个就是Integer常量池实现的有关类。
在该类的内部有三个字段,分别是low,high 用于限定常量池的存储范围。还有一个Integer cache[] 数组,用于存储缓存的常量。
low的设值被初始化为-128,这是在代码中写死的一个最低值。最高值的获取,所需会利用jdk里面的一个内部类去调用虚拟机的一个参数(也就是所Integer缓存池的最高范围并不是127,而是要看有没通过一个虚拟机进行设值)。
如果使用这个vm参数进行Integer最高存储位的设置,则返回该值,(该值的返回还有几个条件判断,但设置的值小于127时,则返回127.当设置的值大于了Integer数值的最大值2^31-1时,则直接返回Integer.MAX_VALUE)
确认好low,high值后,则会利用一个for循环,循环的去创建数值对应的Integer对象。