java中用==比较对象时是不是调用object的equal方法

java中用==比较对象时是不是调用object的equal方法
最新回答
快乐若即若离

2026-06-06 02:32:08

不是
值类型(int,char,long,boolean等)都是用==判断相等性。对象引用的话,==判断引用所指的对象是否是同一个。equals是Object的成员函数,有些类会覆盖(override)这个方法,用于判断对象的等价性。例如String类,两个引用所指向的String都是"abc",但可能出现他们实际对应的对象并不是同一个(和jvm实现方式有关),因此用==判断他们可能不相等,但用equals判断一定是相等的。另一个类似的例子是BigInteger。总体来说要搞清楚,还是需要先理解清楚对象实体和引用之间的关系。
不觉素颜

2026-06-24 12:44:20

*
public
boolean
equals(Object
obj):指示其他某个对象是否与此对象“相等”。
*
这个方法,默认情况下比较的是地址值。比较地址值一般来说意义不大,所以我们要重写该方法。
*
怎么重写呢?
*
一般都是用来比较对象的成员变量值是否相同。
*
重写的代码优化:提高效率,提高程序的健壮性。
*
最终版:
*
其实还是自动生成。
*
*
看源码:
*
public
boolean
equals(Object
obj)
{
*
//this
-
s1
*
//obj
-
s2
*

return
(this
==
obj);
*

}
*
*
==:
*
基本类型:比较的就是值是否相同
*
引用类型:比较的就是地址值是否相同
*
equals:
*
引用类型:默认情况下,比较的是地址值。
*
不过,我们可以根据情况自己重写该方法。一般重写都是自动生成,比较对象的成员变量值是否相同