OpenJDK8 Object类

JAVA Object类

Object类是JAVA中所有对象的基类。

/**
 * 返回运行时类
 */
public final native Class<?> getClass();
/**
 * 返回对象hash值
 * <1> 不改变对象属性的前提下。
 *      程序的一次执行,同一对象先后获取的hashcode必须一致;
 *      而另一次执行时,可以与当前执行时对象的hashcode值不一致
 * <2> equals方法返回true,则两个对象的hashcode必须一致
 * <3> equals方法返回false,并不能保证两个对象的hashcode值不一致
 */
public native int hashCode();
/**
 * 用于判断一个对象与另一个对象是否相等(默认就是用==判断,当且仅当x,y表示同一对象时才为true)
 * equals方法需要满足条件:
 * <1> 对于非空对象,自身对自身的equals方法恒true
 * <2> 对称性;X.equals(Y)为true,则Y.equals(X)也为true
 * <3> 传递性;X.equals(Y)为true,且Y.equals(Z)为true,那么X.equals(Z)也为true
 * <4> 永久性:不改变两对象属性前提下,多次判断X.equals(Y)结果始终一致
 * <5> 任何对象,equals(null)永为false
 * 注意点:
 *     重写本方法时,必须要同时重写hashcode方法,以保证特性:俩对象相等时,它们的hashcode值必定一致
 */
public boolean equals(Object obj) {
    return (this == obj);
}
/**
 * 创建对象的副本。
 * 不提供默认实现。如果没有实现Cloneable接口,会抛运行时异常 CloneNotSupportedException
 * 所有数组都实现了Cloneable接口,数组的元素都是新的实例值,但是对对象元素来说,得注意“浅拷贝”问题
 */
protected native Object clone() throws CloneNotSupportedException;
/**
 * 返回对象的字符串表示。
 * 默认表现形式: 完整类名@十六进制hashcode
 */
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

线程唤醒

/**
 * 放弃对象锁,并随机唤醒一个等待该对象的线程(可能有多个等待,只随机唤醒一个)
 * 只能被有锁的线程调用,否则抛异常 IllegalMonitorStateException
 */
public final native void notify();
/**
 * 放弃对象锁,并唤醒所有等待该对象的线程
 * 只能被有锁的线程调用,否则抛异常 IllegalMonitorStateException
 */
public final native void notifyAll();

wait线程等待

 /**
     * 当前线程等待,直到别的线程通过notify或notifyAll唤醒,或者经过特定的时效
     * 前提: 当前线程必须得先有本对象的锁
     * 线程一直处于等待状态,直到满足以下四点中任一条件:
     * 1)别的线程调用了本对象的notify,恰好唤醒了本线程;
     * 2)别的线程调用了本对象的notifyAll;
     * 3)别的线程中断了本线程;
     * 4)达到预设时间,##设为0时表示不考虑时间因素,只等唤醒##
     *
     * 注意点:
     *  1)虚假唤醒问题。应该将if -> while循环
     *  2)本方法调用,会将当前线程放进等待集合,并只释放#本对象锁#,其它的对象锁仍然会被保持;可能会出现死锁
     *
     * 只能被有锁的线程调用,否则抛异常 IllegalMonitorStateException
     */
    public final native void wait(long timeout) throws InterruptedException;
/**
 * wait(long timeout)的纳秒时间配置
 * 纳秒并没实际设置,采用四舍五入的方式到秒
 */
public final void wait(long timeout, int nanos) throws InterruptedException 
/**
 * wait(0)永不过期的配置
 */
public final void wait() throws InterruptedException 

finalize终结方法

/**
 * 在垃圾回收算法判定本对象已无引用时,由垃圾回收器调用,具体回收时间未知
 * 注意点:
 *      官方不建议使用finalize方法,
 */
protected void finalize() throws Throwable { }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值