Objects

概述

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
posted @ 2024-11-14 23:19  有空  阅读(16)  评论(0)    收藏  举报