Oblect类
Object类:类层次结构的根类。每个类都使用 Object 作为超类,每个类都直接或者间接的继承自Object类。
Object类的方法:
(1)public int hashCode():返回对象的哈希码值。
注意:Object类的hashcode方法针对不同的对象返回不同的整数,一般是通过将该对象的内部地址转换成一个整数来实现的。
(2)public final Class getClass():返回此 Object 的运行时类
Class类的方法public String getName():以 String 的形式返回此 Class 对象所表示的实体
(3)public String toString():返回该对象的字符串表示。
如何重写呢?
把该类的所有成员变量值组成返回,一般采用自动生成toString()方法。
注意:直接输出一个对象的名称,其实就是调用该对象的toString()方法。
源码:
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
(4)public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
源码:
public boolean equals(Object obj) {
return (this == obj);
}
这个方法,默认情况下比较的是地址值。一般比较地址值意义不大,所以我们要重写该方法。
如何重写呢?
比较对象的成员变量值是否相同,一般采用自动生成equals()方法。
==:
基本类型:比较的就是值是否相同
引用类型:比较的就是地址值是否相同
equals:
引用类型:默认情况下比较的是地址值。我们根据情况自己重写该方法。一般重写都是自动生成,比较对象的成员变量值是否相同。
(5)protected Object clone():创建并返回此对象的一个副本。
注意:
第1点:如果想对某个对象实现clone操作,该对象的类就要实现Cloneable接口。
第2点:protected修饰,我们要在要clone对象所在的类中重写clone()方法
Cloneable:此类实现了Cloneable接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。
注意:该接口没有方法,这个接口是标记接口,告诉我们实现该接口的类就可以实现对象的clone了。