Java Object

Java doc中这样描述 Object:

"The root class of Java class hierarchy. All non-primitive types (including arrays) inherit either directly or indirectly from this class".

即,Java中除基础类型之外的类型(包括Enum),都是直接或间接地继承自Object类。


Object类中的方法有:

protected Object clone();

调用private native 方法 internalClone()进行浅拷贝。


public void equals(Object o);

equals()方法是比较两个对象。默认的实现是比较2个对象的引用在堆中的地址。


public int hashCode()

hashCode()返回对象的hash code。默认返回的是引用的地址。

equals()返回true的两个对象,hash code的值必须相同。所以,两个函数的重写必须保持同步。


protected void finalize();

当gc判断认定该对象不再被任何其他对象引用时,回收该对象前会掉用finalize()方法来进行一些操作,比如回收一些资源。


public Class<?> getClass();

返回该对象的Class类型。


notify和wait

public final native void notify();

public final native void notifyAll();

public final native void wait();

public final void wait(long millis);

以上4个final方法主要用来实现线程间的同步机制。

可以简单理解为,调用object的wait来释放锁,线程进入等待。当object调用notify后,唤醒之前调用该object的wait方法的线程。notify唤醒1个wait线程,notifyAll唤醒所有对应的wait线程。


public String toString();

默认实现为:

    public String toString() {
        return getClass().getName() + '@' + Integer.toHexString(hashCode());
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值