JavaAPI-object学习

JavaApi学习-Object源码

  • 使用的工具
  • Object
    • Object类中的方法介绍
    • 1). registerNatives()
    • 2). getClass()
    • 3). hashCode()
    • 4).equals(Object)
    • 4). clone()
    • 6). toString()
    • 7). notify()
    • 8). notifyAll()
    • 9). wait(long timeout)
    • 10). wait(long timeout, int nanos)
    • 11). wait()
    • 12). finalize()

使用的工具

查看源码的工具是IDEA,使用到的参考文档是JavaAPI1.6中文版。

Object

Object是所有类的超类,所有的类都是在它的基础上开发出来的。它的类的结构如图所示:

JavaAPI-object学习_第1张图片

Object类中的方法介绍

1). registerNatives()

进行本地方法的注册,注册了的方法就是该类中除了*registerNatives()*方法以外的所有本地方法,比如:getClass()hashCode()clone() 等方法。
代码片.

   private static native void registerNatives();
    static {
        registerNatives();
    }

2). getClass()

JavaAPI-object学习_第2张图片
代码块

public final native Class<?> getClass();

3). hashCode()

JavaAPI-object学习_第3张图片
代码块

public native int hashCode();
hashCode默认返回的哈希值是当前类存储的物理地址,开发者可以根据自己的需求进行代码的重写。

4).equals(Object)

JavaAPI-object学习_第4张图片
代码

 public boolean equals(Object obj) {
        return (this == obj);
    }

这里的判断对象是否相等,判断的是两个对象所的内存地址是否相同,相同返回true,不同就返回false,所以一般对该方法对进行重写操作。

4). clone()

JavaAPI-object学习_第5张图片
代码

protected native Object clone() throws CloneNotSupportedException;

6). toString()

JavaAPI-object学习_第6张图片
代码

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

7). notify()

JavaAPI-object学习_第7张图片
代码

 public final native void notify();

8). notifyAll()

JavaAPI-object学习_第8张图片
代码

 public final native void notifyAll();

9). wait(long timeout)

导致当前线程等待,直到另一个线程调用该对象的 notify() 方法或该对象的 notifyAll() 方法,或经过指定的时间量,才能够唤醒该线程。
JavaAPI-object学习_第9张图片
代码

 public final native void wait(long timeout) throws InterruptedException;

10). wait(long timeout, int nanos)

timeout - 要等待的最长时间(以毫秒为单位)
nanos - 额外时间(以毫微秒为单位,范围是 0-999999)
此方法类似于一个参数的 wait 方法,但它允许更好地控制在放弃之前等待通知的时间量。用毫微秒度量的实际时间量可以通过以下公式计算出来: 1000000*timeout+nanos
在其他所有方面,此方法执行的操作与带有一个参数的 wait(long) 方法相同。需要特别指出的是,wait(0, 0) 与 wait(0) 相同。
代码

 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);
    }

11). wait()

此方法的行为就好像它仅执行 wait(0) 调用一样。
代码

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

12). finalize()

JavaAPI-object学习_第10张图片
代码

 protected void finalize() throws Throwable { }

你可能感兴趣的:(笔记,java)