java源码分析-Object

Java面向对象的基础类,,一切类的最上层,鼻祖类。-------jkd-1.8

没有属性定义,都是方法,,有12个显性方法。

private static native void registerNatives();

native关键字修饰,表示调用的不是java写的方法(C++集成在.dll文件中的方法),是需要所在的操作系统提供的(必须)。作用就是,然后编译时,会将c++方法映射到带有native关键字的对应方法。具体的不细究了。

而这个方法的作用应该是 注册本地方法,,让jvm知道,我需要应用外部函数(CC++),为其他native方法服务。https://blog.csdn.net/a379039233/article/details/6097656

public final native Class<?> getClass();

也是native的,该方法作用就是获取类对象,类的定义就是:具有一组相同特征或行为的实例的抽象并进行描述。对象就是 某个类的具体实例,但是 类 也是一个对象,,本身有一定的特征及描述信息,Java中有专门定义了一个类,Class,描述其他类所具有的这些特性。

public native int hashCode();

作用就是返回当前方法的的hash码,意义很大。

public boolean equals(Object obj) {
return (this == obj);
}

首先,== 与equal的的区别:https://blog.csdn.net/qq_27471405/article/details/81010094

这里直接==,也不难理解,,很好玩的是,这里的==刚好解释了  链接里的信息。

protected native Object clone() throws CloneNotSupportedException;

这里的protected很有讲究,clone出来的是新对象  还是新引用,,这个自己写个demo测试了一下,,是新对象,,这个就引入了深拷贝、浅拷贝。

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

若对象没有重写,则输出就是 完整包名+类名+@+对象的哈希码,至于为什么这样,感觉就是输出能唯一(可能不)锁定这个对象的信息?而不是具体参数。

protected void finalize() throws Throwable { }

垃圾回收时调用的,,自己也可以调用,

剩下的有

 核心方法都是native,这个涉及到线程的状态、多线程编程,,放在后面慢慢边学习边写吧。

原文地址:https://www.cnblogs.com/haerwang/p/9957565.html