第一节 Object类和Objects类的常用API

1.1Object类

  • Object类的特点
    所有类都是直接或间接继承Object。
  • Object类常用API
    boolean equals(Object obj) 比较两个对象是否相同,相同返回true,否则返回false。
    String toString() 默认返回值是:类全名@对象地址值

1.1.1 equals方法

  • Object类equals方法默认的实现
    默认是通过比较两个对象的地址来判断两个对象是否相同。
  • 重写equals方法的目的
    判断两个对象是否相同时不想通过比较地址值判断,而是希望通过比较两个对象的成员变量的值来判断是否相同。

示例代码

public class Demo01 {
    public static void main(String[] args){
        // 创建学生对象
        Student s1 = new Student("jack",20);
        Student s2 = new Student("jack",20);

        // 比较两个学生对象是否相同
        boolean b = s1.equals(s2);
        //没有重写equals情况下,地址是不相等的,所有结果是false
        System.out.println(b);
    }
}

实体类

public class Student {
    private String name;
    private int age;
    
    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //get set 方法...

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }
}

1.1.2 toString方法

  • Object类toString方法概述
    默认返回值:类全名@对象在内存中的地址值
    如: com.jack.demo.Student@75828a0f
  • Object类toString方法调用时机
    直接调用:通过对象名调用
    间接调用:直接打印对象到控制台时,系统会自动调用该对象的toString方法。
  • 重写toString方法的目的
    在打印对象时不想看对象在内存中的地址值,而希望看到对象的成员变量及其值是什么。

示例代码

public class Demo02 {
	public static void main(String[] args){
		// 创建学生对象
		Student s1 = new Student("jack",20);
		Student s2 = new Student("rose",20);
		​
		System.out.println(s1.getName()+"="+s1.getAge());
		System.out.println(s2.getName()+"="+s2.getAge());
		​
		s1.showInfo();
		s2.showInfo();// 直接调用toString方法
		System.out.println(s1.toString());// 间接调用:直接打印对象到控制台时,系统会自动调用该对象的toString方法。
		System.out.println(s1);// 创建集合对象
		ArrayList<String> list = new ArrayList<>();
		// 添加元素
		list.add("a");
		// 调用ArrayList集合的toString方法
		System.out.println(list); 
	}
}

实体类

	public class Student {
    private String name;
    private int age;

    public Student() {
    }public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
    //get set ...// 显示学生信息(模拟toString方法)
    public void showInfo(){
        System.out.println(this.name + "=" + this.age);
    }@Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

1.2Objects 类

  • public static boolean equals(Object a, Object b)
    比较对象a和b是否相同,相同返回true,否则false
    底层是依赖于对象的equals方法进行比较。
  • public static Object requireNonNull(Object obj):
    判断obj是否为null,如果不为null,则不抛异常,将对象obj作为返回值返回。
    如果obj为null则抛出异常。
  • public static boolean nonNull(Object obj)
    判断对象obj是否不为null,如果是,则返回true,否则false
  • public static boolean isNull(Object obj)
    判断对象obj是否为null,为null返回true,否则false

示例代码

public class ObjectsDemo {
    public static void main(String[] args){
        // 创建学生对象
        Student s1 = new Student("rose",30);
        Student s2 = new Student("jack",20);
        // 比较两个学生是否相同
        System.out.println(Objects.equals(s1,s2));// s1 = null;
        Student s3 = Objects.requireNonNull(s1);
        System.out.println(s3 == s1);// 判断对象obj是否不为null,如果是,则返回true,否则false
        System.out.println(Objects.nonNull(s1));
​
        s1 = null;
        // 判断对象obj是否为null,为null返回true,否则false
        System.out.println(Objects.isNull(s1));
        
        saveStudent(s1);
    }/*
        保存学生信息
     */
    public static void saveStudent(Student student){
        // 在JDK1.7之后的做法
        Objects.requireNonNull(student);
        // 在JDK1.7之前的做法
        if (student == null){
            throw new NullPointerException();
        }
        System.out.println("保存学生信息");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值