关于Integer自动装箱和拆箱的小知识

来源:互联网 发布:数据库编程培训机构 编辑:程序博客网 时间:2024/06/06 14:21

在自动装箱时(int 转Integer),如果int的值在-128到127之间,不会去创建一个对象,因为-128到127之间的数据早已经缓存在堆内存中了,也就是说要是发现int的值在-128到127之间,会先查找缓存里有没有这个值,如果有,那么这个引用会指向缓存里相应数据的地址。反之,如果int的值在这个区间外,则会new 一个对象出来。下面举例说明:

Integer a = 4;
Integer b = 4;
Integer c = 555;
Integer d = 555;

System.out.println(a == b); //输出为true,因为引用的都是缓存在堆里的同一数据的地址

System.out.println(c == d);//输出为false,因为555不在缓存堆里,所以会创建对象出来,此时两个不同的地址都指向555

0 0
原创粉丝点击