美文网首页
Integer类型的a和b,a==b的争议

Integer类型的a和b,a==b的争议

作者: 极致涕木 | 来源:发表于2017-07-25 18:22 被阅读0次

    非常简单的一段代码,有时候却藏着一道玄机:

    面试常问这题,其实是在考察享元模式,大家都知道输出为true。因为查看Integer源码

    就知道Integer会缓存-128到127之间的对象,调用valueOf方法会返回对应的缓存对象,从而避免频繁创建对象拉低性能。

    但是,最近我面试时,遇到一种说法:

    赋值时自动装箱,a==b时自动拆箱。

    虽然结果一致,但是解释不同。当时一下子有点懵,回家之后立即求证:编译上面这段代码,javap -verbose  TestMain.class  查看字节码

    从字节指令上可以看出,==比较时并没有什么拆箱操作(拆箱是自动调用intValue方法)。

    所以,Integer类型的a==b,不存在赋值时装箱,比较时拆箱的说法。

    相关文章

      网友评论

          本文标题:Integer类型的a和b,a==b的争议

          本文链接:https://www.haomeiwen.com/subject/ebtpkxtx.html