在 Java 语言 中所有的类都有一个公共的父类 Object,一个类只要没有显示的继承一个类,则肯定是 Object 的子类。下面的这两个语句的效果是一样的。
class 类名 extends Object{}
class 类名{}
每个类都继承了 Object,那么 Object 有以下常用的方法:
方法名称 | 描述 |
---|---|
public boolean equals(Object object) | 比较两个对象是否相等 |
public int hashCode() | 取得对象的 hash 值 |
public String toString() | 打印对象的里面的数据值 |
equals 主要是针对引用类型的数据比较,比较他们之间的内容是否相等。与 == 差别是,== 比较的地址,equals比较的内容。
定义一个普通类
package com.haicoder.net.haistr;
public class StrClass {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
定义一个测试类
package com.haicoder.net.haistr;
public class StringTest {
public static void main(String[] args) {
System.out.println("嗨客网(www.haicoder.net)\n");
StrClass strClass = new StrClass();
System.out.println("strClass : " + strClass);
System.out.println("strClass.toString() : " + strClass.toString());
System.out.println("");
StrClass strClass1 = new StrClass();
System.out.println("strClass.equals(strClass1) : " + strClass.equals(strClass1));
}
}
运行结果如下:
我们看到有 toString 和没有 toString 打印出来的结果是一样的,都将对象的地址打印出来了。equals 是对两个对象内容的比较,由于 strClass 和 strClass1 两个地址内容不一样,所以判断的结果为 0 。
默认情况下,每个对象的 toString 方法打印的是对象的地址,equals 方法比较的是两个对象的地址。
因为所有的类都是 Object 的子类,所以每个对象都是有 toString 和 equals 方法的。在正式编程工作时一般都会重写类里面的 toString 方法和 equals 方法。
Object 类可以接受任意的引用数据类型,所以在很多的类库设计上面都采用 Object 作为方法的参数,这样操作起来就会比较方便。