Equals方法(Java)

3-1 Equals方法
1、不用==来比较是否相等,要用Equals方法来比较
2、 Equals方法默认属于Object类并且不是final类型,所以任何类都可以继承并且覆盖此方法
3、对象之间不能再用“==”进行比较,这样比较的是对象的内存地址,
而不是对象的具体属性。(new之后的对象)
4、覆盖后的equals方法比较不是内存地址,而是根据需求来决定返回true或者false的规则。
程序示例:
public class Hello {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
             B  b1=new B(20);
             B  b2=new B(20);
          // System.out.println(b1==b2);//违反规则始终返回false
           //若没有重写equals方法执行下面语句,无论怎样都返回false。equals参数默认都为object
             System.out.println(b1.equals(b2));
    }
   public static class B
    {
         private int i;//属性i
         public  B(int i) //B类有参构造方法
        {
            this.i =i;
        }
     public boolean equals(B b2) //重写equals的方法
        {
             if (this.i==b2.i)
                 return true;
             else
                 return false;
        }
    
    }

3-2 Equals方法2
1、equals方法一般情况下都需要覆盖成自己想要的方法(根据自己的的需求定义两对象相等的条件)。
2、配合多态可实现强大的比较功能,可比较类中的任何数据。

程序示例:
import java.util.*;
public class Hello {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
   
             C c1=new C(10);
             C c2=new C(10);
               System.out.println(c1.equals(c2));
    }
   public static class B
    {
         private int i;//属性i
         public  B(int i) //B类有参构造方法
        {
            this.i =i;
        }
     public boolean equals(B b2) //重写equals的方法
        {
             if (this.i==b2.i)
                 return true;
             else
                 return false;
        }
   }
   public static class C extends B
    {
           private int j;

            public C(int j) {
                super(j); //优先调用子类
                this.j = j;  //不在利用继承过来的方法i的引用
            }
            //若不重写方法,则调用父类的equals方法 B b2=new C(),子类调用函数是采用引用的方式
             public boolean equals(B b2) //重写equals的方法,B类的引用
        {
                 C  x=(C)b2;//强制转化类型转化为C类的对象,因为当前j为c类对象
             if (this.j==x.j)
                 return true;
             else
                 return false;
        }
           
    }
    
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值