1.1 概述
java.lang.Object 类是 Java 语言中的根类, 即所有类的父类 / 超类 / 祖宗类. 它中描述的所有方法子类都可以使用. 在对象实例化的时候, 最终找的父类就是 Object.
如果一个类没有特别指定父类, 那么默认则继承自 Object 类.
根据 JDK 源代码及 Object 类的 API 文档, Object 类当中包含的方法有 11 个. 简述其中的两个方法, 如下:
public String toString(): 返回该对象的字符串表示 (对象的类型 [email protected]+ 内存地址值).
由于 toString 方法返回的结果是内存地址, 而在开发中, 经常需要按照对象的属性得到相应的字符串表现形式, 因此需要时可以对它进行覆盖重写.
比如:
- public class Person {
- private String name;
- private int age;
- // 重写 toString() 方法
- @Override
- public String toString() {
- return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
- }
- // 省略构造器与 Getter Setter
- }
public boolean equals(Object obj): 指示其他某个对象是否与此对象 "相等".
a. 地址比较 (默认方式)
如果没有覆盖重写 equals 方法, 那么 Object 类中默认进行 == 运算符的对象地址比较, 只要不是同一个对象, 结果必然为 false.
b. 对象内容比较 (自定义方法)
如果希望进行对象的内容比较, 即所有或指定的部分成员变量相同就判定两个对象相同, 则可以覆盖重写 equals 方法.
例如:
- import java.util.Objects;
- public class Person {
- private String name;
- private int age;
- @Override
- public boolean equals(Object o) {
- // 如果对象地址一样, 则认为相同
- if (this == o)
- return true;
- // 如果参数为空, 或者类型信息不一样, 则认为不同
- if (o == null || getClass() != o.getClass())
- return false;
- // 转换为当前类型
- Person person = (Person) o;
- // 要求基本类型相等, 并且将引用类型交给 java.util.Objects 类的 equals 静态方法取用结果
- return age == person.age && Objects.equals(name, person.name);
- }
- }
除以上的两个方法外, 还有 clone(),finalize(),getClass(),hashCode(),notify(),notifyAll(),wait 等, 具体可查 API.
来源: http://www.bubuko.com/infodetail-3655417.html