Java学习笔记——Object类

本文详细探讨了Java中的Object类,包括clone方法的使用,浅拷贝与深拷贝的区别,以及equals和hashCode的方法实现。重写clone接口需要实现Cloneable,而clone方法默认执行浅拷贝。在equals方法的实现中,遵循了特定的原则,如自反性、对称性、传递性和一致性。同时,当重写equals时,通常需要一同重写hashCode,以确保相等的对象具有相同的哈希码,避免在哈希表中出现不期望的行为。
摘要由CSDN通过智能技术生成

方法预览

protected Object clone(); // 创建并返回对象的一个副本

public boolean equals(Object obj); // 判断其他对象是否与本对象“相等”

protected void finalize(); // GC确定不存在更多此对象引用的时候,GC调用此方法回收

public final native Class<?> getClass(); // 返回此对象运行时的类

public native int hashCode(); // 返回该对象的哈希码值

public final native void notify(); // 唤醒在此对象监视器上等待的单个线程

public final native void notifyAll(); // 唤醒在此对象监视器上等待的所有线程

public public String toString(); // 返回该对象的字符串表示

// 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待
public final native void wait(long timeout) throws InterruptedException

public final void wait(long timeout, int nanos) throws InterruptedException

public final void wait() throws InterruptedException

clone()

Cloneable

由于clone是Object的protected方法,如果不去显示的重写clone,继承类就无法被调用clone方法。同时,如果仅仅显式重写了clone接口未实现Cloneable接口依旧会发生CloneNotSupportedException。

下面是完整重写clone接口

public class CloneTest implements Cloneable{
    
    int a;

    @Override
    public Object clone throws CloneNotSupportedException{
        return super.clone();
    }

}

clone的浅拷贝与深拷贝

浅拷贝与深拷贝的不同点在于浅拷贝的拷贝对象与原始类型引用的是同一个对象,而深拷贝的拷贝对象与原始类型引用的不同对象,即对类中的每一个对象进行一次拷贝。主要实现的区别在于对clone函数的重写方法不同。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值