Java中的Object类有着特殊的意义,他是全部其它类的父类,查看Object类的源代码,能够发现代码很少,逻辑也很简单。java
Java全部类的源代码咱们均可以在JDK的文件中查看,在JDK下会有一个名为src.zip的压缩包,里面就是全部类的源代码,固然这里全部的文件都是.java格式的。为了方便查看,咱们能够找到JDK中jre/lib下的rt.jar文件,这里面也有源代码,只不过是以.class文件形式存在,咱们能够使用反编译软件jd-gui(http://jd.benow.ca可下载)查看,会比直接查看.java文件方便很多。固然看源代码以前先看看API,也能事半功倍。ui
如下是jdk1.7.0_40下Object类的源代码this
1 public class Object 2 { 3 private static native void registerNatives(); 4 5 public final native Class<?> getClass(); 6 7 public native int hashCode(); 8 9 public boolean equals(Object paramObject) 10 { 11 return this == paramObject; 12 } 13 14 protected native Object clone() 15 throws CloneNotSupportedException; 16 17 public String toString() 18 { 19 return getClass().getName() + "@" + Integer.toHexString(hashCode()); 20 } 21 22 public final native void notify(); 23 24 public final native void notifyAll(); 25 26 public final native void wait(long paramLong) 27 throws InterruptedException; 28 29 public final void wait(long paramLong, int paramInt) 30 throws InterruptedException 31 { 32 if (paramLong < 0L) { 33 throw new IllegalArgumentException("timeout value is negative"); 34 } 35 36 if ((paramInt < 0) || (paramInt > 999999)) { 37 throw new IllegalArgumentException("nanosecond timeout value out of range"); 38 } 39 40 if ((paramInt >= 500000) || ((paramInt != 0) && (paramLong == 0L))) { 41 paramLong += 1L; 42 } 43 44 wait(paramLong); 45 } 46 47 public final void wait() 48 throws InterruptedException 49 { 50 wait(0L); 51 } 52 53 protected void finalize() 54 throws Throwable 55 { 56 } 57 58 static 59 { 60 registerNatives(); 61 } 62 }
在Object类中,咱们常常会打交道方法主要是toString()、equals(Object paramObject)和hashCode()三个方法。spa
其余的方法中,notify()、notifyAll()和wait(long paramLong)都是本地方法,和线程相关。还有两个重载的方法wait()和wait(long paramLong, int paramInt)也都和线程相关。线程
finalize()是GC相关的方法。code