今天再看面试实录有问到Object类的常用方法,自己竟然一时有些答不出来,所以记录下来,给自己和大家一些提醒和回顾。
不记录构造函数和重载的话,大概分为9个方法:
1.hashcode()
2.equals()
3.wait()
4.notify()
5.notifyAll()
6.toString()
7.getClass()
8.clone()
9.finalize()
方法说明如下:
hashcode():
该方法用于哈希查找,重写了 equals 方法一般都要重写 hashCode 方法。
equals():
该方法是非常重要的一个方法。一般 equals 和 == 是不一样的,但是在 Object 中两者是一样的,都是比较地址是否相同。
wait():
wait 方法就是使当前线程等待该对象的锁。wait() 方法一直等待,直到获得锁或者被中断。wait(long timeout) 设定一个超时间隔,如果在规定时间内没有获得锁就返回,该方法不仅会让出CPU,而且会让出当前自身拥有的锁。
notify():
该方法唤醒在该对象上等待的某个线程进入锁池竞争。
notifyAll():
notifyAll方法唤醒在该对象上等待的所有线程进入锁池去竞争锁。
toString():
返回一个 String 对象,用来标识自己。该方法用得比较多,一般子类都有覆盖。
getClass():
顾名思义,获得该类的类型。
clone():
实现对象的浅复制,但需要实现 Cloneable 接口才可以,否则抛出 CloneNotSupportedException 异常。
finalize():
GC在回收该对象前调用此方法,让对象“垂死挣扎”后,再判断对其是否进行回收。