Java的Object内的方法有哪些

java的Object类的完整路径是java.lang.Object,是所有类的父类编译,当我们创建一个类时,如果没有明确继承一个父类,那么它就会自动继承Object,成为 Object 的子类(隐式继承)。Object类有九大常用方法,分别是getClass()finalize()toString()equals()hashcode()wait()notify()notifyAll()clone()

1、getClass()

首先,getClass()方法用于获取一个对象的运行时类(Class),进而通过返回的Class对象获取类的相关信息,比如获取该类的构造方法、该类有哪些方法、该类有哪些成员变量等信息。

2、finalize()

finalize()是Object的protected方法在发生GC时触发该方法,大致流程是当对象变成GC Roots不可达时,GC判断该对象是否覆盖了finalize()方法,若未覆盖,则直接将其回收。否则,若对象未执行过finalize()方法,将其放入F-Queue队列,由一低优先级线程执行该队列中对象的finalize()方法。执行finalize()方法完毕后,GC会再次判断该对象是否可达,若不可达,则进行回收;否则,对象“复活”。
子类可以override方法以实现(1)防止对象被回收、(2)防止对象不被回收。防止对象被回收只需让该对象与GC ROOTS之间存在可达链即可。

3、toString()

toString()方法返回该对象的String表示。

4、equals()和hashcode()

equals()用于判断两个对象是否相等;hashcode()用于返回对象的哈希值。

5、wait()、notify()和notifyAll()

  • wait()方法用来让持有此对象的监视器的线程处于阻塞状态.
  • 含参的wait()方法调用后,线程可以在等待时间结束后进入就绪状态(以下简称“唤醒”);无参的wait()方法调用后,则必须等待持有该对象监视器的线程主动调用notify()或notifyAll()方法后才能被唤醒。区别在于notify()方法唤醒在此对象监视器上等待的单个线程,如果所有线程都在此对象上等待,则会随机唤醒其中一个线程;notify()方法会唤醒等待的所有线程。

6、clone()

Java语言的Object类实现了Cloneable接口,一个对象可以通过调用Clone()方法生成对象。需要注意的是,clone()方法并不是Cloneable接口里的,而是Object类里的,Cloneable是一个标识接口,标识这个类的对象是可被拷贝的,如果没有实现Cloneable接口却调用了clone()方法就会报错。

posted @ 2023-11-18 14:42  技术小白求安排  阅读(82)  评论(0)    收藏  举报