Object类中与Objects类中equals方法的区别

Object类中与Objects类中equals方法的区别

  
import java.util.Objects;  
  
/**  
    目标:掌握Objects类的equals方法  
 */  
public class Test {  
    public static void main(String[] args) {  
        //声明以下两个变量使用不同类里的equals进行比较  
        String s1=null;  
        String s2=new String("李四");  
        //使用Object类里的 equlas 进行比较  
        //System.out.println(s1.equals(s2));  
        //使用Objects类里的 equlas 方法进行比较  
        System.out.println(Objects.equals(s1,s2));  
        //以上是使用Object类的对比情况、当S1为null时会报空指针异常也就是如下错误  
        //Exception in thread "main" java.lang.NullPointerException  
        // at com.duotai.D6.Test.main(Test.java:14)        //使用Objects类中的equlas方法则不会报以上异常  
        // 因为在Objects中的equals方法会首先针对S1有一个非空的验证  
        // 如果s1为空则直接返回false  
  
    }  
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Java,所有的对象都继承了Objectequals()方法equals()方法用于比较两个对象是否相等,其默认实现是比较两个对象的引用是否相等。也就是说,如果两个对象的引用指向同一个内存地址,那么它们就相等,否则它们不相等。 如果想要比较两个对象的内容是否相等,就需要在自定义的类覆盖equals()方法,根据自定义的比较规则来实现。在覆盖equals()方法时,需要注意以下几点: 1. equals()方法必须满足自反性、对称性、传递性和一致性。 2. equals()方法必须检查参数是否为null,并返回false。 3. equals()方法必须检查参数是否为同一类型的对象,并返回false。 4. equals()方法必须比较对象的内容而不是引用。 例如,下面是一个自定义的Person类,覆盖了equals()方法来比较两个Person对象的内容是否相等: ```java public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Person other = (Person) obj; if (!Objects.equals(this.name, other.name)) { return false; } if (this.age != other.age) { return false; } return true; } } ``` 在这个例子,覆盖了equals()方法来比较两个Person对象的name和age属性是否相等。需要注意的是,equals()方法使用了Objects.equals()方法来比较两个字符串是否相等,这个方法可以避免了比较null值时的NullPointerException异常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值