java源码 1.8_Java JDK1.8源码学习之路 1 Object

public classObject {

//native 方法用于注册一个系统

//native是一个计算机函数,一个Native Method就是一个Java调用非Java代码的接口。方法的实现由非Java语言实现,比如C或C++。private static native voidregisterNatives();

//静态方法块 在这个类加载的时候去调用这个静态的registerNatives()方法,用于注册这个调用系统底层的接口static{

registerNatives();

}

//getClass 这个方法对于熟悉JAVA的反射再熟悉不过了

//反射就是在java运行过程中,通过类名.getClass() 可以获取到这个类运行过程中的字节码文件(Class文件)

public final native Class>getClass();

//hasCode返回一个对象在内存里面所表示的hash值

//如果两个对象的hash值相同,则表示这两个对象是相等的,或者说是同一个对象

public native inthashCode();

//比较两个对象是否相等,这里使用的是 ==号比较符号,判断两个对象是否有相同的内存地址。

//这里复习一下,==比较基本类型 比如int char floot 都比较的是他们的值

//对象使用 == 比较的时候比较的是他们的内存地址。

public booleanequals(Object obj) {return (this ==obj);

}

//对象的克隆方法,需要被克隆的对象需要实现Cloneable 接口 调用父类的clone()方法实现对象的克隆

protected native Object clone() throwsCloneNotSupportedException;

//toString 方法,用于直观的表现出当前对象,一般表现形式是 对象名称+@+十六进制哈希值

publicString toString() {return getClass().getName() + "@" +Integer.toHexString(hashCode());

}

//唤醒正在等待这个对象的某一个线程,这个唤醒是任意的

public final native voidnotify();

//唤醒所有等待当中的线程

public final native voidnotifyAll();

//让一个线程进入等待状态,传入一个毫秒数后运行,或者由另一个线程调用notify()方法让这个线程再次运行

public final native void wait(long timeout) throwsInterruptedException;

//传入第二个参数,纳秒,是为了更好的控制让线程从等待到运行

public final void wait(long timeout, int nanos) throwsInterruptedException {if (timeout < 0) {throw new IllegalArgumentException("timeout value is negative");

}if (nanos < 0 || nanos > 999999) {throw newIllegalArgumentException("nanosecond timeout value out of range");

}if (nanos > 0) {

timeout++;

}

wait(timeout);

}

//这个方法其实就是调用wait方法,只不过传入一个0ms的参数

public final void wait() throwsInterruptedException {

wait(0);

}

//这个方法和垃圾回收机制有关,通知垃圾回收器开始运行,但是运行的具体时间不确定,垃圾回收器会清理掉当前内存中没有引用的对象

protected void finalize() throws Throwable { }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值