Object类
Object类是所有类的顶层父类,所由类都是直接或者间接的继承自它。
public class myTest01 {
public static void main(String[] args){
Object o = new Object();
//object中的方法。
System.out.println(o.hashCode());//返回此对象的一个hash值
System.out.println(o.toString());//返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。通俗理解获取该类的字节码文件对象。
System.out.println(o.getClass());//表示此对象运行时类的 Class 对象。
}
}
Object类中的clone方法
//Object中的原方法实现。
protected native Object clone() throws CloneNotSupportedException;
//首先克隆方法的修饰词是protected的所以在继承Object类的时候,想要使用这个方法必须近行继承重写
class test{
String str = "hello";
@Override
//重写时将权限修饰词改为public
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
//因为native修饰的源码是JVM底层所交互,这里我们看不到源码。所以不能重写里边所拥有的方法
//方法重写后在调用这个方法的时候,必须要捕获编译异常。
}
Object中的
浅克隆: 就是克隆一个对象时,被克隆的对象里边有另一个类的对象。这时候只是克隆另一个对象的地址值,而没有把另外一个对象也克隆一份。
public class myTest01 {
public static void main(String[] args) throws CloneNotSupportedException {
//捕获编译异常后才能使用此方法。
test test = new test();
Object clone = test.clone();
}
}
class test{
String str = "hello";
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
Object中的equals方法
equals方法实际比的是在堆内存的中的地址是,而在实际的使用过程中我们比的是是某种类型的值,而不是内存地址是,因故经常方法重写。
//定义一个实例方法
class test{
String str;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
test test = (test) o;
return Objects.equals(str, test.str);
}
}
Object中的toString方法的重写
本来应该打印的的是内存的地址值,一般很多类重写toString方法,让其打印成员变量值。
class test{
String str = "hello";
@Override
public String toString() {
return "test{" +
"str='" + str + '\'' +
'}';//重写后的toString方法,打印出来的就是字符串成员变量值。可以根据自己的需求重写。
}
}