java中的Object类
Java是纯面向对象的语言,换言之,在Java中一切都是对象。而Object类是Java中所有类的基类,也就是说所有类都直接或间接继承自Object。
在继承体系中,父类是基础,子类是对父类的扩充和丰富,所以理解Object类对理解其他类至关重要。理解Object类,关键在于其实现的方法。
1.getClass()
1 | public final native Class<?> getClass(); |
返回对象的Class对象,可以看出是个native方法。
2.hashCode()
1 | public native int hashCode(); |
返回对象的hashcode值,也是个native方法,
3.equals()
1 | public boolean equals(Object obj) { |
判断对象是否相同,注意这里判断的是引用。
4.clone()
1 | protected native Object clone() throws CloneNotSupportedException; |
返回该对象的克隆。
5.toString()
1 | public String toString() { |
返回对象的字符串表示。
6.wait()
1 | public final native void wait(long timeout) throws InterruptedException; |
与synchronized配合使用,释放锁使线程等待。
7.notify() notifyAll()
1 | public final native void notify(); |
唤醒等待的线程。
8.finalize()
1 | protected void finalize() throws Throwable { } |
当对象没有有效引用时被垃圾回收器调用,但不保证一定会被调用。
对象回收过程中的finalize():
- 通过可达性分析找到可以回收的对象
- 将对象加入到一个较低优先级的线程(垃圾回收器线程),线程会依次调用对象的finalize()方法
- 该线程执行了对象的finalize方法,若对象在该方法中实现了自救,对象不在回收
- 对象的finalize方法还未来得及执行(线程的优先级较低),对象被回收
原文作者: NTJD
原文链接: http://yoursite.com/2020/08/12/java中的Object类/
版权声明: 转载请注明出处(必须保留作者署名及链接)