5.3 Object类
类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。
是从所有类进行抽取而来的,具备着所有对象都具备的共性内容。
常用的共性方法
5.3.1 equals方法
- 指示其他某个对象是否与此对象“相等”。
- 返回
如果此对象与 obj 参数相同,则返回 true;否则返回 false。
对于未重写的equals方法,相当于 ==
源代码如下:
public boolean equals(Object obj) {
return (this == obj);
}
一般都会覆盖此方法,根据对象的特有内容(比如属性),建立判断对象是否相同的依据。
注意:
当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
重写equals例子:
public boolean equals(Object obj){
if(!(obj instanceof Person)) //判断obj对象是不是Person类型的 不是抛出异常,是就进行转换,并比较
{
throw new ClassCastException("不是同一类型,无法转换");
}
Person p =(Person) obj;
return this.id ==p.id; //比较两个对象的内容---id,而不是默认比较对象的地址
}
5.3.2hashCode方法
- 返回该对象的哈希码值,
- 来源jdk 6.0 api解释:
实际上,由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。(这一般是通过将该对象的内部地址转换成一个整数来实现的,但是 JavaTM 编程语言不需要这种实现技巧。)
重写hashCode例子:
public int hashCode(){ //重写hashCode方法
return id;
}
5.3.3 getClass方法
-
表示此对象运行时类的 Class 对象。
-
Class对象:
类型信息在运行时如何表示(RTTI),由Class对象的特殊对象完成,Class对象包含与类有关的信息。
类作为程序中的一部分,每个类都有一个Class对象(即,每当编写且编译了一个新类,就会产生一个Class对象,这个对象被保存在一个同名的.class文件中)
5.3.4 toString方法
- 返回该对象的字符串表示形式
对于未重写的toString方法,
源代码:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
重写toString例子:
public String toString(){//重写toString方法
return "Person"+id;
}