为啥比较两个对象是否相等,要用Objects的equals方法,而不是用对象自己的equals方法来解决呢?
Objects:
Objects类是一个工具类,提供了很多操作对象的静态方法供我们使用。
package cn.ensource.d14_objects;
import java.util.Objects;
public class Test {
public static void main(String[] args) {
// 目标:掌握Objects类提供的常用方法
String s1 = null;
String s2 = "itheima";
// String是重写了equals方法
// System.out.println(s1.equals(s2));
// Objects类是工具类,里面都是一些static类方法,构造方法私有,可以直接调用
System.out.println(Objects.equals(s1, s2));
}
}
如果对象为null,那么在调用的时候就会出现异常。但是我们使用Objects.equals方法就不存在这个问题。
可见使用Objects类是安全的。
a == b: 看看是不是同一个对象。
a != null: a不等于null的情况下,才会调用a.equals方法。
可以更加安全。
package cn.ensource.d14_objects;
import java.util.Objects;
public class Test {
public static void main(String[] args) {
// 目标:掌握Objects类提供的常用方法
String s1 = null;
String s2 = "itheima";
// String是重写了equals方法
// System.out.println(s1.equals(s2));
// Objects类是工具类,里面都是一些static类方法,构造方法私有,可以直接调用
System.out.println(Objects.equals(s1, s2));
System.out.println(Objects.isNull(s1)); // 返回true
System.out.println(Objects.isNull(s2)); // 返回false
System.out.println(Objects.nonNull(s1));
System.out.println(Objects.nonNull(s2));
}
}
再检查代码,发现跟s1 == null是等价的。
使用工具类写出的代码更加高大上!