【自学笔记】01Java基础-08Java常用API:02Object类详解

>什么是API?

1 Object类

Object类是所有Java类的根父类,无论是否显式声明,所有的Java类都直接或间接地继承自java.lang.Object。

1.1 Object类的作用

  1. 统一规范:为所有Java对象提供了一组基本方法,使得任何Java对象都能使用这些方法,保证了Java语言的统一性和一致性。
  2. 多态支持:Object类中的方法如equals()、hashCode()和toString()确保了Java中的所有对象都具备基本的行为特征,这为多态性、封装性和继承性提供了基础。
  3. 基础方法:定义了一些基础操作,比如对象比较、克隆、线程调度相关的wait/notify等方法。

1.2 Object类的常用方法

  • public boolean equals(Object obj): 返回两个对象是否相等true/false,默认实现是比较对象引用地址是否相同,但通常会在子类中重写以根据对象内容进行比较。
  • public String toString(): 返回对象的字符串表示形式,默认返回类名@十六进制内存地址,但在实际开发中通常会覆盖该方法以提供有意义的字符串描述。
  • public int hashCode(): 返回对象的哈希码,主要用于支持基于散列的数据结构,如HashMap、HashSet。当重写equals()时,通常需要同时重写hashCode()以维持一致性。
  • final Class getClass(): 返回对象的运行时类信息,常用于反射操作。
  • void notify(), void notifyAll(), void wait(long timeout) 等方法:这些方法用于线程同步与通信,它们是在synchronized代码块或方法中调用的,并且属于Java并发编程的一部分。
    【自学笔记】01Java基础-08Java常用API:02Object类详解_第1张图片
    【自学笔记】01Java基础-08Java常用API:02Object类详解_第2张图片

1.3 Objects类

java.util.Objects 类是一个工具类,提供了一系列静态方法。调用时只需Objects.方法名()

import java.util.Objects;

public class MyClass {
    private String name;

    public boolean isNameEqual(String otherName) {
        // 使用Objects类的equals静态方法进行null安全比较
        return Objects.equals(this.name, otherName);
    }
}

1.4 Object类Objects类String类中equals()方法的区别

  1. String类的equals()方法
    String类重写了Object类的equals()方法,用于比较两个字符串的内容是否相等。它会逐字符地检查两个字符串的值是否相同,对null值的比较将直接抛出NullPointerException。
String s = null;
boolean isEqual = Objects.equals(s, "someValue"); // 这将抛出异常
  1. Objects类的equals()方法
    Objects.equals()是一个静态方法,可以比较两个对象的内容是否相同,会先判断是否null而不会空指针异常,它实际上就是调用了被比较对象的equals()方法。
public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
}
例如:
String str1 = "Hello";
String str2 = new String("Hello");
String str3 = null;

System.out.println(Objects.equals(str1, str2)); // 输出 true,因为字符串内容相等
System.out.println(Objects.equals(str1, str3)); // 输出 false,因为 str3 为 null
System.out.println(Objects.equals(null, null)); // 输出 true,因为两者都是 null
  1. Object类的equals()方法
    Object类中的equals()方法默认比较两个对象的引用地址是否相等。一般会像String这样的类重写了以提供基于内容的比较。
public boolean equals(Object obj) {
    return (this == obj);
}

综上,使用Objects的equals方法在进行对象的比较会更安全。 String.equals一般只用于字符串比较,Objects.equals适用于所有比较,Object.equals用于比较引用地址,一般会重写来实现更多功能。

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