小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
Object是所有对象的超类。而其中一些常用的方法,相比大家都在用,但真突然问你,Object常用的方法有哪些 可能不会马上就能答上来。我今天分享一些Obejct中常用的方法
1.getClass()
public final native Class<?> getClass();
从这个方法可以看出 他是一个native方法,之前的文章分享过native方法是即java调用非java代码的接口
2.equals()
public boolean equals(Object obj) {
return (this == obj);
}
这个比较是用的== 当然你可以重写这个equals方法(我们大家都知道的String类就重新了这个equals方法)
3.toString()
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回对象的字符串表示形式。通常,toString方法返回一个“文本表示”此对象的字符串 由上面的返回可以知道:class对象的toString方法返回一个字符串,该字符串由对象作为实例的类的名称、at符号字符“@”和对象哈希代码的无符号十六进制表示形式组成 但建议所有子类重写此方法。
4.在线程中会需要用到一些方法
public final native void notify();
public final native void notifyAll();
public final native void wait(long timeout) throws InterruptedException;
-
wait(long timeout) 使当前线程等待,直到另一个线程调用此对象的notify()方法或notifyAll()方法,或者经过指定的时间
-
notify() 唤醒正在该对象监视器上等待的单个线程如果有任何线程正在等待此对象,则选择其中一个线程进行唤醒。选择是任意的,由实现自行决定
-
notifyAll() 唤醒在此对象监视器上等待的所有线程。线程通过调用一个wait方法在对象的监视器上等待。在当前线程放弃对该对象的锁定之前,唤醒的线程将无法继续
在Object类中,可能接触最多的就是equals,toString,getClass方法,而其中equals和toString都可以按需重新此方法