概述
Objects 是一个工具类, 提供了一些方法去完成一些功能.
Objects 类中的常见的成员方法:
图1 Objects 类中的常见的成员方法
equals 方法
程序示例:
Javabean 类:
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
测试类:
public class Demo1 {
public static void main(String[] args) {
// 1. 创建学生类的对象
Student s1 = null;
Student s2 = new Student("zhangsan", 23);
// 2. 比较两个对象的属性值是否相同
boolean result = s1.equals(s2); // NullPointerException: Cannot invoke "Object_demo.Student.equals(Object)" because "s1" is null
System.out.println(result);
}
}
Java 中, 不能用 null 调用方法.
改写:
public class Demo1 {
public static void main(String[] args) {
// 1. 创建学生类的对象
Student s1 = null;
Student s2 = new Student("zhangsan", 23);
// 2. 比较两个对象的属性值是否相同
if (s1 != null) {
boolean result = s1.equals(s2);
System.out.println(result);
} else {
System.out.println("调用者为空"); // 调用者为空
}
}
}
改写测试类:
import java.util.Objects;
public class Demo1 {
public static void main(String[] args) {
// 1. 创建学生类的对象
Student s1 = null;
Student s2 = new Student("zhangsan", 23);
// 2. 比较两个对象的属性值是否相同
boolean result = Objects.equals(s1, s2);
System.out.println(result); // false
// 细节:
// 1. 方法的底层会判断 s1 是否为 null, 如果为 null, 直接返回 false
// 2. 如果 s1 不为 null, 那么就利用 s1 再次调用 equals 方法
// 3. 此时 s1 是 Student 类型, 所以最终还是会调用 Student 中的 equals 方法.
// 如果没有重写, 比较地址值, 如果重写了, 就比较属性值.
}
}
图1
isNull, nonNull 方法
程序示例:
public class Demo1 {
public static void main(String[] args) {
// public static boolean isNull(Obiect obi) 判断对象是否为 null, 为 nul1 返回 true, 反之返回 false
Student s3 = new Student();
Student s4 = null;
System.out.println(Objects.isNull(s3)); // false
System.out.println(Objects.isNull(s4)); // true
System.out.println(Objects.nonNull(s3)); // true
System.out.println(Objects.nonNull(s4)); // false
}
}
图1