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

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

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 回答

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

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

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

Integer n1 = 47;        

Integer n2 = 47;

n1 == n2 //true

1 回复 有任何疑惑可以回复我~
#1

Ricardo慕 提问者

谢谢。理解了
2019-11-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信