Java中 Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。
如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类。
public class MyClass /*extends Object*/ { ... }
Object类中有很多方法,这里我们主要介绍2个:
toString:返回该对象的字符串表示。
equals:判断两个对象是否"相等"。
Object 类中实现的 toString() 方法是返回当前对象的类型和内存地址信息,但在一些子类(如 String、Date 等)中进行了重写,所以我们可以根据需要在自定义类型中重写 toString() 方法。
public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } /** * 重写Object类的toString方法,打印对象的属性 * * @return */ @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
Object 类中的 equals() 方法用来检测一个对象是否等价于另外一个对象。equals()方法只能比较引用类型,判断内存地址是否相等。
public boolean equals(Object obj) { return (this == obj); }
通常情况下,我们自定义的类如果要使用equals()
方法的话,也是比较两个对象的实体内容是否相同,所以就需要对Object类中的equals()
方法进行重写。
import java.util.Objects; public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } }
==和equals的区别
==:
equals方法:
equals()
方法和==
的作用是相同的。equals()
方法,重写以后,比较的不再是两个引用的地址值是否相等。