Java之Object类

一、介绍

Object类是Java中所有类的超类(位置:java.lang.Object;)。每个类都是继承自Object,可以使用Object类型的变量引用任何类型的把对象,如:

1
Object obj = new Person("lujun");

在Java中,只有基本类型的值不是对象,其他全部是Object类的类型。 ## 二、Object类常用方法

equals方法:

Object类中的equals方法用于检测一个对象是否等于另一对象,是根据两个对象的引用判断的。如果这两个对象具有相同的引用,那么这两个对象一定是相等的。

equals方法特性:

1.自反性:对于任何非空引用x,x.equals(x)返回true。

2.对称性:对于任何引用x和y,如果x.equals(y)返回true,则y.equals(x)返回true。

3.传递性:对于任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)应该返回true。

4.一致性:如果x和y引用的对象没有发生变化,那么反复调用x.equals(y)应该返回同样的结果。

5.对于任意非空引用x,x.equals(null)应该返回false。

hashCode方法:

散列码是由对象导出一个整型值。散列码没有规律,每个对象都有一个默认的散列码,其值为对象的存储地址。例如String类使用如下方法计算散列码:

1
2
3
4
int hash = 0;
for(int i=0; i < length(); i++){
hash = 31*hash + charAt(i);
}

如果重新定义equals方法,必须重新定义hashCode方法。equals方法于hashCode方法的一致性,如果x.equals(y)返回true,那么x.hashCode()就必须等于y.hashCode()。

Object类中定义的hashCode方法:int hashCode()。返回队对象的散列码,可以是正负数。

toString方法:

返回表示对象的字符串。

1
2
3
4
5
//将对象与一个操作符通过一个操作符 + 连接起来,编译器会自动调用对象的toString方法
Point p = new Point(10,20);
String message = "Current point is:" + p;//相当于"Current point is:" + p.toString();
System.out.println(System.out);
1
2
//输出结果:
java.io.PrintStream@2f6684

因为PrintStream类没有覆盖toString方法,所以输出的是类+地址形式。

getClass方法:

返回包含对象信息的类对象。Object类定义:Class getClass()。

clone方法:

创建一个对象的副本。Java运行时系统为新实例分配存储空间,并将当前对象复制到这块存储区域中。Object类定义:Object clone()。

三、Class类

位置:java.lang.Class;

getName方法:

返回给类的名字。Class类中定义:String getName()。

getSuperClass方法:

以Class对象返回该类的超类信息。Class类中定义:Class getSuperClass()。

From:JAVA核心技术|卷一|第五章|二小节