Java中Object是所有对象的祖先对象,在阅读源码de的过程中,经常能看到一些实现类的方法中重写了Object类中自带的方法,也就是说这些方法是Java中所有类都具有的方法,现在来记录一些学习笔记,帮助以后阅读源码的时候,知道哪些方法已经被重写过的。
public final native Class<?> getClass();
public native int hashCode();
public boolean equals(Object obj) {
return (this == obj);
}
protected native Object clone() throws CloneNotSupportedException;
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
public final native void notify();
public final native void notifyAll();
public final native void wait(long timeout) throws InterruptedException;
public final void wait(long timeout, int nanos) throws InterruptedException {
if (timeout < 0) {
throw new IllegalArgumentException("timeout value is negative");
}
if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
}
if (nanos > 0) {
timeout++;
}
wait(timeout);
}
public final void wait() throws InterruptedException {
wait(0);
}
protected void finalize() throws Throwable { }
其中有些方法被native修饰,表示该方法的具体实现类是调用领悟本地操作系统内部实现,c/c++实现。
equals 在没有被重写的情况下与 ==的效果一样都是判断对象的引用地址是否一致。