栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

Integer的缓存问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Integer的缓存问题

8大基本数据类型中,Byte、Short、Integer、Long在直接给包装类赋值为基本类型时,会缓存-128~127之间的值,不会创建新对象(此外Charater在0~128之间也会缓存,亲测)

但是,最近面试题让我很疑惑

public static void main(String[] args) {
    Integer i1 = Integer.valueOf(127);
    Integer i2 = Integer.valueOf(127);
    Integer i3 = new Integer(127);
    Integer i4 = new Integer(127);
    Integer i5 = 127;

    System.out.println(i1 == i2);
    System.out.println(i1 == i3);
    System.out.println(i3 == i4);
    System.out.println(i3 == i5);
    System.out.println(i1 == i5);
}

运行之后,结果并没有让人意外:

true
false
false
false
true

总结:通过new创建时,和没有new的肯定不是同一个对象,其余情况下==比较都是true

注意:此处不能使用equals()方法比较,因为包装类重写了equals,用于比较数值大小是否相等

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040192.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号