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

  • 相关阅读:
    6.3 The Memory Hierarchy
    去掉正在打印对话框
    SQL SERVER格式化字符串位数,不足补零
    WCF学习系列二_使用IIS发布WCF服务
    WCF学习系列一_创建第一个WCF服务
    IrisSkin4控件使用方法
    窗体加载后的设置焦点事件
    SQL 分组后取最小行号记录
    二维数组、齿形数组和游长变元表
    C#数组按值和按引用传递数组区别
  • 原文地址:https://www.cnblogs.com/haerwang/p/9957565.html
Copyright © 2011-2022 走看看