博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于 Integer
阅读量:6991 次
发布时间:2019-06-27

本文共 879 字,大约阅读时间需要 2 分钟。

hot3.png

最近面试,被问到两个Integer直接用 == 比较有什么问题。自己回答的不是很好,先总结下:

@Test    public void integerTest() {        // case1        Integer a = new Integer(0);        Integer b = new Integer(0);        System.out.println(a == b);   // false        // case2        Integer c = 0;        Integer d = 0;        System.out.println(c == d);  // true        // case3        Integer e = 128;        Integer f = 128;        System.out.println(e == f);  // false        //case4        int g = 128;        System.out.println(e == g); // true  自动拆箱    }

 

  1.  针对 case1, 很好理解,因为比较的是地址值,所以肯定不相等;
  2. 针对 case2 和 case3, Integer赋予一个int值的时候,它会调用一个valueOf()的方法。Integer a = Integer.valueOf(0);
    Integer 的常量池是由-128至127组成。当我们给一个Integer 赋的值在这个范围之类时就直接会从缓存返回一个相同的引用,所以 case2 返回 true。而超过这个范围时,就会重新 new一个对象。所以 case3 返回 false。
  3. case4 ,包装类型和基本类型比较时,会自动拆箱,会转变为基本类型的比较。因此会转变为值的比较,所以返回 true;

参考:

转载于:https://my.oschina.net/freedemon/blog/1944058

你可能感兴趣的文章
QC缺陷管理操作-细说
查看>>
干货丨5个问题鉴定大数据安全分析真伪!
查看>>
大话敏捷测试
查看>>
漫画赏析: Vi 还是不 Vi,这是个问题
查看>>
《Adobe After Effects CS6中文版经典教程》——1.8 渲染与导出合成图像
查看>>
《编写高质量代码:改善c程序代码的125个建议》——建议17-2:避免“悬挂”的else...
查看>>
jemalloc 5.0.0 全新版本发布,内存分配管理
查看>>
《草根自媒体达人运营实战》一一第2章 自媒体人必备品质
查看>>
两年没人领,Android 漏洞最高悬赏从 5 万涨到 20 万
查看>>
《SolidWorks 2016中文版完全自学手册)》——2.4 尺寸标注
查看>>
《沟通的技术——让交流、会议与演讲更有效》一2.3 何时询问为什么
查看>>
HBase 事务支持 Omid
查看>>
《程序员的呐喊》一一1.3 作者手记:名词王国里的执行
查看>>
微软开始为厂商提供 SQL Server 2014 OTM
查看>>
页面中iframe中嵌入一个跨域的页面,让这个页面按照嵌入的页面宽高大小显示的方式;iframe嵌套的页面不可以编辑的问题解决方案...
查看>>
维护 VS Code 开源项目背后的那些事情
查看>>
亿级用户平台的大数据实践
查看>>
《IPv6精髓(第2版)》——3.5 全局路由前缀
查看>>
Parse SDK:里面到底有什么宝贝?
查看>>
《Java遗传算法编程》—— 2.8 交叉实现
查看>>