缓存常量池

 

亚信面试题:

http://www.xuexila.com/mianshiti/1699798.html

先说结论
Integer a=127;
Integer b=127;
Integer c=128;
Integer d=128;
a==b true
c==d false

Integer a=new Integer (127);
Integer b=new Integer (127);
Integer c=new Integer (128);
Integer d=new Integer (128);
a==b false
c==d false
Integer 内部有一个-128到127的缓存池,但是如果是new出来的,那每一个对象都会去新建,不会用到缓存池的数据
实测其他基本数据类型的包装类都有这个缓存池,包括:Byte,Short,Long

public static Integer valueOf(int i) {
return i >= 128 || i < -128 ? new Integer(i) : SMALL_VALUES[i + 128];
}

/**
* A cache of instances used by {@link Integer#valueOf(int)} and auto-boxing
*/
private static final Integer[] SMALL_VALUES = new Integer[256];

static {
for (int i = -128; i < 128; i++) {
SMALL_VALUES[i + 128] = new Integer(i);
}
}
---------------------
作者:大大大超人
来源:CSDN
原文:https://blog.csdn.net/superman4933/article/details/79293112
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值