Object.class

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()
    垃圾回收有关

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容