概述
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 nullSystem.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, 反之返回 falseStudent s3 = new Student();Student s4 = null;System.out.println(Objects.isNull(s3)); // falseSystem.out.println(Objects.isNull(s4)); // trueSystem.out.println(Objects.nonNull(s3)); // trueSystem.out.println(Objects.nonNull(s4)); // false}
}
图1