大侠们帮我看一下下面这个java程序中==和equals的区别?

2025-06-22 15:23:19
推荐回答(4个)
回答1:

1、== 是比较内存地址是否相等
2、equals 是比较对象的内容是否相同
只要是用关键字new的对象,那么就一定会在内存中开辟空间,所以a==b为false;
a.equals(b),其实这里相当于a==b,因为Student继承自Object,而Object的equals方法就是比较内存地址,所以这里需要重写Student的equals方法或者hashCode方法。

public boolean equals(Object obj) {// 这是Object的equals方法
    return (this == obj);

回答2:

a和b是两个变量,但可以指向同一个对象,即同一地址,此时a==b为true;
你这个例子中a与b是两个对象,所以a==b为false。
a.equals(b))想不为false需要override其父类的hashCode方法才行。只有hashCode方法返回的结果一致了equals才返回true。当然,你也可以override父类的equals方法。

回答3:

a和b 是两个不同的对象,a==b肯定返回FALSE;
a.equal(b)主要看student的equal方法实现,如果没有重写,默认也是地址对比,所以也会返回FALSE;

回答4:

两个不是一个对象,存的地址都不相同,所以都是false