Java——Object类(基础)

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方法,打印出来的就是字符串成员变量值。可以根据自己的需求重写。
    }
}
发布了15 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Junzizhiai/article/details/102574436
今日推荐