java Integer 与int 如何比较内容值是否相等?

之前是我没问清楚,我的纠结点在与两个Integer对象如何判断相等比较方便,因为前者需要判断null,

Integer a = null;
Integer b = new Integer(128);
System.out.print(Objects.equals(a,b));//所以用这个方法来判断相等,就不用判断null了
阅读 10.1k
5 个回答

Integer对象和int使用==进行比较是会使用Integer.intValue进行拆箱,比较的就是int值,返回的是true

新手上路,请多包涵

Integer 缓存-128 ~ 127 之间的数字,超出范围外的就只能去new新的对象
一般都不推荐用==,因为双等比较的是对象是否同一个地址。
一般用equals()方法,equals比较的是内容。

clipboard.png

clipboard.png

equals(Object)方法啊,专门用来比较对象的。

assert new Integer(500).equals(500)

int a=128;
Integer b=xx;

比较: if(Integer.valueOf(a).equals(b)) ,这样比较可以规避null问题

题主第一句得出的结论是错误的:
"一般的当Integer的内容值超过-128~127的时候,如果与int使用==就会返回false。"

尝试了一下 int = 128 或者 int = 127,使用==同样返回true。

    public static void main(String[] args) {
        int a = 127;
        Integer i = new Integer(127);

        System.out.println(a == i);

        int b = 128;
        i = new Integer(128);

        System.out.println(b == i);
    }

第二个 Integer对象是否为空的问题,参考Integer.equals的实现 先判空,在执行判断条件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏