equals与==区别

本文详细解析了Java中equals方法与==操作符的区别及应用场景,包括基本类型和引用类型的不同处理方式,以及如何正确地重写equals方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述:

•A.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。
•B.基本类型没有equals方法,equals只比较值(对象中的内容)是否相同(相同返回true)。
•C.一个类如果没有定义equals方法,它将默认继承Object中的equals方法,返回值与==方法相同。
equals==的实质:
JAVA中利用"=="比较变量时,系统使用变量在""中所存的值作为比较的依据。
基本数据类型在""中存的是其内容值,而对象类型在""中存的是地址,这些地址指向""中的对象。
其它对象的equals方法仅当被比较的两个引用指向的对象内容相同时,对象的equals()方法返回true
"==""!="比较的是""中的内容,equals()比较的是""中的内容.
==操作符:
专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相当,只能用==操作符。
equals方法:

用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。

例如:

String a=new String("foo");

String b=new String("foo");
两条new语句创建了两个对象,然后用a,b这两个变量分别指向了其中一个对象,这是两个不同的对象,他们的首
地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b即返回false,而这两个对象中内容是相
同的,所以,表达式a.equals(b)将返回true。

如果一个类没有定义equals方法。它将继承Object类的equals方法,Object
equals方法的实现代码如下:
•boolean equals(Object o){

•return this==o;

•}
•这说明,如果一个类没有自己定义equals方法,它默认的equals方法(从Object类






的)


就是使用==操作符,也是比较两个变量指向的对象是否是同一个对象,这时候使



用equals和使用==会得




到同样的结果,如果比较的是两个独立的对象则总返回false。如果你编写的类希望能


够比较该类创建的两个实例对象的内容是否相同,那么你必须覆盖equals方法,由你




自己写代码来决定在什么情况即可以认为两个对象


的内容是相同的。



给直接继承自object类的类型重


equals:

给直接继承自Object 基类的类型重写 Equals方法
public classMyType {
 privateint x;
 private string s;
 public overridebool Equals(objectobj) {
if (obj == null) {
       return false;
     }
//如果 obj是空的话,就直接返回假
  // 因为当前对象不会是空,否则在还没有调用Equals 方法之前就会先抛出空指针异常 
//显然两个不同类型的对象不可能相等     

if(this.getType() !=obj.getType()) {
        return false;
     
} //如果 obj与当前对象不属于同一个类型,也直接返回假

MyType o = (MyType)obj;

//
最后逐个比较他们的成员变量是否相等就可以了 
  
if (this.x !=o.x ||this.s !=o.s) {

        return false;

}      

return true;

  } }

此文章参考网络其它资料 自己总结和体会 

禁止他人私用。











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值