Integer类的缓存机制

来源:互联网 发布:上实剑桥 知乎 编辑:程序博客网 时间:2024/05/01 14:24

 下面的程序

public class IntegerTest{public static void main(String[] args){         Integer a1 = 100;         Integer a2 = 100;         System.out.println(a1==a2);         Integer b1 = 200;         Integer b2 = 200;         System.out.println(b1==b2);}}

输出的结果为:

为什么会出现这样的结果?
查看Integer中的源码就知道原因。

上面是一个Integer类中的内部类,是处理Integer的缓存,cache的大小为256,static块中是对cache赋值从-128(包含)~127(包含),所以上面的例子可以得出100在范围以内不会产生新的对象,直接返回缓存中的对象,200不在范围内会产生新的对象,注意Integer的缓存数据是不会被垃圾回收
从该类的注释看也可以知道

 

0 0
原创粉丝点击