• 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,这个涉及到线程的状态、多线程编程,,放在后面慢慢边学习边写吧。

  • 相关阅读:
    Codevs 1283 等差子序列
    Codevs 1282 约瑟夫问题
    Codevs 1228 苹果树
    Codevs 1191 数轴染色
    洛谷P1080 国王游戏
    Codevs 1523 地精部落
    2014-7-17 NOIP模拟赛
    Codevs 3409 搬运礼物
    Codevs 1425 最长公共子串
    TyvjP1863 [Poetize I]黑魔法师之门(2014-8-27)
  • 原文地址:https://www.cnblogs.com/haerwang/p/9957565.html
Copyright © 2020-2023  润新知