常用API:Object、Objects

Object

Object类的作用:

  • Object类是Java中所有类的祖宗类,因此,Java中所有的对象都可以直接使用Object类中提供的一些方法。

Object类的常见方法

方法名 说明
public String toString() 返回对象的字符串表示形式
public boolean equals(Object o) 判断两个对象是否相等
protected Object clone() 对象克隆

toString存在的意义:toString()方法存在的意义就是为了被子类重写,一般返回对象具体的内容。

equals存在的意义:直接比较两个对象的地址是否完全相同,完全可以用 “ == ” 替代equals,equals存在的意义就是为了被子类重写,一般子类自己来定制比较规则(不然比较对象内容)。

Student类

import java.util.Objects;

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

    public Student() {
    }

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

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        // 判断两个对象地址是否一样返回true
        if (this == o) return true;
        // 判断 o 是null直接返回false,或者比较者的类型与被比较者的类型不一样,返回false
        if (o == null || getClass() != o.getClass()) return false;
        // o不是null,且o一定是学生类型的对象,就开始比较内容了
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name);
    }
    
    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;
    }
}

Test类

public class Test {
    public static void main(String[] args) {
        Student s1 = new Student("张三",18);
        System.out.println(s1);

        Student s2 = new Student("张三",18);
        System.out.println(s2.equals(s1));
    }
}

Object类提供的对象克隆方法

当某个对象调用这个方法时,这个方法会复制一个一模一样的新对象返回。

 浅克隆

拷贝出的新对象,与原对象中的数据一模一样(引用类型拷贝的只是地址)

 常用API:Object、Objects_第1张图片

深克隆 

对象中基本类型的数据直接拷贝。

对象中的字符串数据拷贝的还是地址。

对象中还包含的其他对象,不会拷贝地址,会创建新对象。

常用API:Object、Objects_第2张图片  

 Objects 

  • Objects是一个工具类,提供了很多操作对象的静态方法给我们使用。
方法名 说明
public static boolean equals(Object a,Object b) 先做非空判断,再比较两个对象
public static boolean isNull(Object obj) 判断对象是否为null,为null返回true,反之返回false
public static boolean noNull(Object obj) 判断对象是否不为null,不为null返回true,反之返回false
import java.util.Objects;

public class Test {
    public static void main(String[] args) {
        // 目标:掌握Objects类提供的常用方法
        String s1 = null;
        String s2 = "abcd";

        System.out.println(Objects.equals(s1,s2));

        System.out.println(Objects.isNull(s1)); //true
        System.out.println(s1 == null); //true
        System.out.println(Objects.isNull(s2)); //false
        System.out.println(s2 == null); //false

        System.out.println(Objects.nonNull(s1)); //false
        System.out.println(Objects.nonNull(s2)); //true
    }
}

源码分析

你可能感兴趣的:(java,开发语言)