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

本文详细介绍了Java中Object类的作用、常用方法,特别是equals(),hashCode(),toString()的用途。同时对比了Objects类的equals()方法,强调了Objects.equals在进行对象比较时的null安全性以及String类equals的独特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

>什么是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并发编程的一部分。
    在这里插入图片描述
    在这里插入图片描述

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用于比较引用地址,一般会重写来实现更多功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值