java练习题-------对equals方法的重写

本文探讨了如何在Java中正确重写equals方法,以比较User类的name和password属性。通过示例代码解释了为什么不能直接使用空值属性进行equals比较,以及IDEA中自动生成equals方法的快捷方式。内容涵盖了Java对象相等性的概念和实践技巧。
摘要由CSDN通过智能技术生成

zh

题目 :创建一个User类 具有 name 和 password属性,重写它们的equals方法,比较俩对象的属性是相同

public class EqualsDemo {
    public static void main(String[] args) {
        User user1=new User(null,"123");
        User user2=new User(null,"123");
        System.out.println(user1.equals(user2));
    }
}
class User{
     private String name;
     private String password;
    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }
    public User() {
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
public boolean equals(Object object){
    //先判断本对象与参数对象的位置是否相同,若相同,必为ture
    if(this==object) return true;
    //接着判断参数对象是否为空,必为false
    if(object==null) return false;
    //然后判断俩对象是不是同一类,若不是,必为false
    if(this.getClass()!=object.getClass()) return false;
    //如果进行到这步就说明俩对象是同一类,就需要对object进行强转变为User形
    User user= (User) object;
  //接着比较俩对象的属性是否相同
        //this.name为空
        if (this.name == null){
            if (user.name != null){
                return false;
            }
            //this.name不为空
        }else if(!this.name.equals(user.name)){
            return false;
        }
        //this.password为空
        if (this.password == null){
            if (user.password != null){
                return false;
            }
            //this.password不为空
        }else if(!this.password.equals(user.password)){
            return false;
        }
           return true;
       }
}

 有小伙伴可能会有疑问 能不能将俩对象属性的比较 改为 

  if (this.password != null && user.password == null || this.password == null && user.password != null)
               return false;
  if (!this.password.equals(user.password)) return false;

 这种情况是不行的,因为当this.passwor==null 时,它不能调用equals方法,会出现空指针异常。

还有一种更简单的方法重写equals,你只要在idea中右键单击选择Generate就可以选择equals方法了。(字体小,你需要仔细看)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值