美文网首页
Object.class

Object.class

作者: 526d10a65c3e | 来源:发表于2019-04-08 17:22 被阅读0次
    Object类是类层次结构的根。 每个类都有Object类作为超类。所有对象(包括数组)都实现此类的方法。
    Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入。Object类没有定义属性,一共有13个方法,大多数是native方法,具体的类定义结构如下图:
    1. 类构造器 public Object()
      Object类中没有显性的创建构造器,是由编译器默认提供的无参构造器

    2. registerNatives()
      其主要作用是将C/C++中的方法映射到Java中的native方法,实现方法命名的解耦。函数的执行是在静态代码块中执行的,在类首次进行加载的时候执行。

    3. getClass()
      用final修饰,此方法不可以重写,返回运行时的类对象

    4. hashCode()
      返回对象的哈希码,是一个整数。 在运行期间,若用于equals方法的信息或者数据没有修改,name同一个对象多次调用此方法,返回的哈希码是相同的。而在两次独立的运行java程序时,对于同一对象,不需要返回的哈希码相同。如果根据equals方法,两个对象相同,则这两个对象的哈希码一定相同 。假如两个对象通过equals方法比较不相同,那么这两个对象调用hashCode也不是要一定不同,相同也是可以的。但是使用者应该知道对不同的对象产生不同的hashCode是可以提高hash tables的性能的。

    5. equals()
      equals方法主要是比较两个对象是否相同,Object中的equals方法比较的是对象的内存地址是否相同。

    6. clone()
      创建并返回此对象的副本,子类必须实现java.lang.Cloneable接口才能使用此方法,否则会抛出CloneNotSupportedException

    7. toString()
      如果不重写此方法那么返回的是“类名@+十六进制无符号的哈希码”

    8. notify(),notifyAll()
      notify()唤醒正在等待此对象监视器的单个线程,notifyAll()唤醒所有线程,选择是任意的。方法只能在同步代码块中执行。

    9. wait()三连
      调用此方法所在的当前线程等待,直到在其他线程上调用此对象notisfy()/notisfyAll()方法,或超过指定的超时时间量。方法只能在同步代码块中执行。

    10. finalize()
      垃圾回收有关

    相关文章

      网友评论

          本文标题:Object.class

          本文链接:https://www.haomeiwen.com/subject/rrcpiqtx.html