equals与==区别

概述:

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

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

例如:

String a=new String("foo");

S tring 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 class MyType {
 private int x;
 private string s;
 public override bool Equals(object obj ) {
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、付费专栏及课程。

余额充值