为了账号安全,请及时绑定邮箱和手机立即绑定

java比较int和Integer的过程是什么样子的?

java比较int和Integer的过程是什么样子的?

蝴蝶不菲 2019-03-14 15:11:43
我同学京东面试, 被问到int和Integer是如何进行比较的? 他回答了intValue()函数自动装箱拆箱和Integer持有的缓存, 然后面试官说不对, 但是源码debug确实是intvalue()拆箱呀, 面试官究竟要的是什么答案呢?
查看完整描述

5 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

考虑-128到127之前的数字


查看完整回答
反对 回复 2019-04-25
?
精慕HU

TA贡献1845条经验 获得超8个赞

这个得看你的代码如何来写了。
Integer.equals(int)
int == Integer 这种会把Integer转换为int(拆箱)进行比较,你会发现如果Integer如果是一个null值的时候会出现NullPointerException
至于面试官想要的答案,恐怕只有他自己清楚了。

查看完整回答
反对 回复 2019-04-25
?
桃花长相依

TA贡献1860条经验 获得超8个赞

话不多说:常量池


public class Test {

    public static void main(String[] args) {

        Integer a1 = 127;

        Integer b1 = 127;

        Integer a2 = 128;

        Integer b2 = 128;

        System.out.println(a1 == b1);

        System.out.println(a2 == b2);

    }

}

刚写的,你执行一下看结果


查看完整回答
反对 回复 2019-04-25
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

Integer.intValue()去比较值。包装类自动拆箱是不错的,在赋值,和运算的是直接可以用包装类的。但是始终是对象类型的。在使用“==”比较的时候会存在差异,楼上给出了这部分的答案。在包装类中在short范围类是可以直接比较的是没有问题的,但超出该范围就出问题。至于面试官想要的答案,只有他自己知道。


查看完整回答
反对 回复 2019-04-25
?
ITMISS

TA贡献1871条经验 获得超8个赞

public static void main(String[] args) {


        

        Integer a1 = 127;

        Integer a2 = 127;

        System.out.println(a1 == a2);// true

        System.out.println(a1.equals(a2));// true

        

        Integer b1 = 128;

        Integer b2 = 128;

        System.out.println(b1 == b2);// false

        System.out.println(b1.equals(b2));// true

        

        Integer c1 = 128;

        int c2 = 128;

        System.out.println(c1 == c2);// true

        System.out.println(c1.equals(c2));// true

        

        int d1 = 127;

        Integer d2 = null;

        System.out.println(d1 == d2);// NullPointerException

        

    }


查看完整回答
反对 回复 2019-04-25
  • 5 回答
  • 0 关注
  • 896 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号