== 、 != 两边的操作数既可以是数值类型,也可以是引用类型。这句话我不理解

来源:3-4 Java中的比较运算符

Ricardo慕

2019-11-16 22:00

public class Equivalence{
    public static void main(String[] args){
        Integer n1 = new Integer(47);
        Integer n2 = new Integer(47);
        System.out.println(n1 == n2);
        System.out.println(n1 != n2);
    }
}

这段程序最后输出的结果先是false,然后是true。

这是为什么?很不理解。

写回答 关注

1回答

  • 慕神8481972
    2019-11-16 22:38:12
    已采纳

    查了下资料. new 出来的对象是存放在堆里面的,== 时比较的是地址;

    也可以直接比较对象的值,比如n1.compareTo(n2) 或n1.intValue() == n2.intValue()

    试了假如直接赋值比较则是相等的, 可能直接赋值是存在栈里面就直接比较值:

    Integer n1 = 47;        

    Integer n2 = 47;

    n1 == n2 //true

    Ricard...

    谢谢。理解了

    2019-11-17 08:40:44

    共 1 条回复 >

Java入门第一季(IDEA工具)升级版

0基础萌新入门第一课,从Java环境搭建、工具使用、基础语法开始

1165172 学习 · 17581 问题

查看课程

相似问题