JDK源码阅读之一-----Object

原创 2012年03月31日 14:22:15
package java.lang;

/**
 *
 * Object类是所有类的超类
 */
public class Object {
    /* getClass、hashCode都是native方法,顺便在这里复习一下native方法吧,简单的讲一个native方法
       就是一个java调用非java代码的接口
    */
    private static native void registerNatives();
    static {
        registerNatives();
    }
    
    public final native Class<?> getClass();

    public native int hashCode();
    
    // equals方法,是用==号写的,在这里使用equals方法和使用==是一样的,所以要重写equeals方法
    public boolean equals(Object obj) {
	return (this == obj);
    }

    
    protected native Object clone() throws CloneNotSupportedException;

   
    public String toString() {
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

    // notify、notifyAll、wait这些操作线程的方法使劲上是Ojbect里的方法
    public final native void notify();

    public final native void notifyAll();
     * @param      timeout   the maximum time to wait in milliseconds.
     * @exception  IllegalArgumentException      if the value of timeout is
     *		     negative.
     * @exception  IllegalMonitorStateException  if the current thread is not
     *               the owner of the object's monitor.
     * @exception  InterruptedException if any thread interrupted the
     *             current thread before or while the current thread
     *             was waiting for a notification.  The <i>interrupted
     *             status</i> of the current thread is cleared when
     *             this exception is thrown.
     * @see        java.lang.Object#notify()
     * @see        java.lang.Object#notifyAll()
     */
    public final native void wait(long timeout) throws InterruptedException;
     * @param      timeout   the maximum time to wait in milliseconds.
     * @param      nanos      additional time, in nanoseconds range
     *                       0-999999.
     * @exception  IllegalArgumentException      if the value of timeout is
     *			    negative or the value of nanos is
     *			    not in the range 0-999999.
     * @exception  IllegalMonitorStateException  if the current thread is not
     *               the owner of this object's monitor.
     * @exception  InterruptedException if any thread interrupted the
     *             current thread before or while the current thread
     *             was waiting for a notification.  The <i>interrupted
     *             status</i> of the current thread is cleared when
     *             this exception is thrown.
     */
    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 >= 500000 || (nanos != 0 && timeout == 0)) {
	    timeout++;
	}
	wait(timeout);
    }

    public final void wait() throws InterruptedException {
	wait(0);
    }

    protected void finalize() throws Throwable { }
}

有关阅读JDK源码的看法

源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。  说到技术基础,我打个比方吧,如果你从来没有学过Java,或是任何一门编程语言如C++,一开始去啃《Core Java》,你是很难从...
  • mijinghjb
  • mijinghjb
  • 2014年04月25日 16:49
  • 3114

JDK部分源码阅读与理解

本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/article/2016/05/31/JDK部分源码阅读与理解/    不喜欢重复造轮子,不喜...
  • u014394255
  • u014394255
  • 2016年12月03日 23:41
  • 3425

如何在Eclipse下查看JDK源代码以及java源代码阅读方法

不会看JDK源代码,相当于没学过Java。 网上不容易找到一篇帮助我解决了如何在Eclipse下查看JDK源代码 的文章。         核心提示:在Eclipse中查看JDK类库的源代码!!...
  • sp_programmer
  • sp_programmer
  • 2015年01月19日 21:31
  • 12061

JDK源码阅读之Object类

JDK源码阅读之Object类源代码package java.lang; public class Object { /* 一个本地方法,具体是用C(C++)在DLL中实现的,...
  • wyp686
  • wyp686
  • 2015年09月25日 17:50
  • 163

基于JDK9从JVM源码研究类java.lang.Object

JAVA是面向对象语言,它的一个重要概念就是面向对象,而其所有类都继承于Object类,所有对象都实现这个类的方法。可以说,它的存在使得所有类都有了共同的祖先,接下来我们从源码来研究下这个神奇的Obj...
  • ynter
  • ynter
  • 2017年11月30日 14:21
  • 78

从JDK源码角度看Object

Java的Object是所有其他类的父类,从继承的层次来看它就是最顶层根,所以它也是唯一一个没有父类的类。它包含了对象常用的一些方法,比如getClass、hashCode、equals、clone、...
  • wangyangzhizhou
  • wangyangzhizhou
  • 2017年06月26日 19:53
  • 2585

JDK源码(一)Object类

JDK源码(一)Object类最近找工作,面试很多大公司都问看没看JDK源码,所以了解JDK源码还是有必要的,因为了解底层的一些实现原理,才能选择更适合的方法解决问题。所以本人决定好好研究一下JDK源...
  • Jerry_1911
  • Jerry_1911
  • 2016年03月23日 12:38
  • 495

JDK源码解析基础篇--java.lang.Object及其方法约定

这是源码阅读的开端,当然选择从类层次结构的根类--java.lang.Object类开始。 所有类的默认继承Object类(若没有继承其他类),Object类是继承体系的根类,由类直接或间接继承。 ...
  • u013679744
  • u013679744
  • 2017年07月22日 22:48
  • 261

JDK源码之Object类详解

从本篇开始,将对Java中各知识点进行一次具体总结,以便对以往的Java知识进行一次回顾,同时在总结的过程中加深对Java的理解。 Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Jav...
  • u012598107
  • u012598107
  • 2017年06月30日 19:32
  • 56

java源码阅读笔记(1)- Object

java.lang.Object registerNatives方法 源代码: private static native void registerNatives(); stati...
  • zhongshiqi226
  • zhongshiqi226
  • 2017年12月06日 16:39
  • 21
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JDK源码阅读之一-----Object
举报原因:
原因补充:

(最多只允许输入30个字)