文章目录
概述
- 所在位置:java.lang.Object
- 作用:Class Object 是所有类的超类,所有对象(包括数组)都实现了这个类的方法
构造器
public class Object {
private static native void registerNatives();
static {
registerNatives();
}
native本地方法
- Java有两种方法:Java方法和本地方法。Java方法是由Java语言编写,编译成字节码,存储在class文件中。本地方法是由其他语言(比如C,C++,或者汇编)编写的,编译成和处理器相关的机器代码。本地方法保存在动态连接库中,格式是各个平台专有的。Java方法是平台无关的,单本地方法却不是。运行中的Java程序调用本地方法时,虚拟机装载包含这个本地方法的动态库,并调用这个方法。本地方法是联系Java程序和底层主机操作系统的连接方法。
- 由此可知,本地方法的实现是由其他语言编写并保存在动态连接库中,因而在java类中不需要方法实现。registerNatives本质上就是一个本地方法,但这又是一个有别于一般本地方法的本地方法,从方法名我们可以猜测该方法应该是用来注册本地方法的。对,你猜的没错。上述代码的功能就是先定义了registerNatives()方法,然后当该类被加载的时候,调用该方法完成对该类中本地方法的注册。
- 一个Java程序要想调用一个本地方法,需要执行两个步骤:第一,通过System.loadLibrary()将包含本地方法实现的动态文件加载进内存;第二,当Java程序需要调用本地方法时,虚拟机在加载的动态文件中定位并链接该本地方法,从而得以执行本地方法。registerNatives()方法的作用就是取代第二步,让程序主动将本地方法链接到调用方,当Java程序需要调用本地方法时就可以直接调用,而不需要虚拟机再去定位并链接。
- 参考博文: https://blog.csdn.net/Saintyyu/article/details/90452826
字段
- 该类无字段
方法
getClass()
- 返回类的Class对象
- 本地方法
public final native Class<?> getClass();
hashCode()
- 返回对象的hash码值
- 本地方法
public native int hashCode();
hashCode总合同
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ntsU9Qi8-1589856840254)(1_Object.assets/1589853781801.png)]
equals(Object obj)
- 判断obj是否等于当前对象
- 对于任何非空的参考值x和y,当且仅当x和y引用相同的对象(x==y)时,该方法才返回true
public boolean equals(Object obj) {
// 通过双等号进行判断
return (this == obj);
}
toString()
-
返回对象的字符串表示
-
子类一般可以重写这个方法
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
notify()
- 唤醒正在等待对象监视器的单个线程
- 如果任何线程正在等待这个对象,其中一个被选择唤醒,选择是任意的
- 线程通过调用wait方法等待对象的监视器
- 本地方法
- final方法表示将其锁定,不允许任何继承类对其进行修改
public final native void notify();
notifyAll()
- 唤醒正在等待对象监视器的所有线程
- 本地方法
public final native void notifyAll();
wait()
- 导致当前线程等待,直到另一个线程调用该对象的notify()方法或notifyAll()方法
finalize()
- 当GC确定不再有该对象的引用时,垃圾收集器将其收集