java.lang.Object类

java.lang.Object类


属性

API

  1. 【√】Object():构造函数;
  2. 【√】protected native Object clone():对象的浅拷贝,将一个新的对象指向原对象,新对象与原对象具备不同的内存空间,但是两者运行时类型相同
  3. 【√】public boolean equals(Object obj):默认是直接比较内存,与“==”等效;只有其他子类重写该方法,才会比较内容
  4. 【√】protected void finalize() throws ThrowableJVM调用此方法,可以将已经判定死亡的对象给捞回来,但只能一次
  5. 【√】public final native Class<?> getClass():返回运行时类型
  6. 【√】public native int hashCode():两个对象equals()返回true,则hashCode()必须相等;反之不一定成立
  7. 【√】public final native void notify():唤醒一个正在等待对象的monitor锁的线程(即:调用了wait(..)),如果有多个,则选择一个。
  8. 【√】public final native void notifyAll():唤醒所有正在等待对象的monitor锁的线程(即:调用了wait(..)
  9. 【√】public String toString()
  10. 【√】public final native void wait()
  11. 【√】public final native void wait(long timeout) throws InterruptedException;:线程等待某个对象的monitor锁,直到调用了notify()/notifyAll,或是超过等待时长,或是线程的interrupt()方法被调用。
  12. 【√】public final native void wait(long timeout, int nanos)
  13. 【√】本地方法private static native void registerNatives();:本地方法是联系Java程序和底层操作系统的方法,一般存放于动态连接库中,registerNatives用于将类中的native方法全部注册到动态连接库中

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public class Object{
//本地方法是联系Java程序和底层操作系统的方法,一般存放于动态连接库中
//registerNatives用于将类中的native方法全部注册到动态连接库中
private static native void registerNatives();
static{
registerNatives();
}

public final native Class<?> getClass();

public native int hashCode();

//默认是直接比较内存,与“==”等效
//只有其他子类重写该方法,才会比较内容
public boolean equals(Object obj) {
return (this == obj);
}

//克隆:浅拷贝,即新建一个对象指向原对象,不具备新的内存空间
//(1)x.clone() != x
//因为x.clone()是一个新的对象
//(2)x.clone().getClass() == x.getClass()
//因为x.clone()指向的是x,两者是同一个类
//(3)x.clone().equals(x) == true
//因为x.clone()就是x的值
//@throws:如果类没有实现Cloneable接口,不支持克隆,抛出CloneNotSupportedException
protected native Object clone() throws CloneNotSupportedException;

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

//唤醒一个正在等待对象的monitor锁的线程(即:调用了wait()),如果有多个,则选择一个
//@throws:如果当前线程不是对象monitor锁的持有者,抛出IllegalMonitorsStateException
public final native void notify();

//唤醒所有正在等待对象的monitor锁的线程(即:调用了wait())
//@throws:如果当前线程不是对象monitor锁的持有者,抛出IllegalMonitorsStateException
public final native void notifyAll();

//使线程在某个对象上等待,直到:(1)有人调用了对象的notify()/notifyAll()方法
//(2)超过了等待时长
//(3)调用了线程的interrupt()方法
//该线程必须持有对象的monitor锁
//@throws:当线程处于等待前或等待中,调用interrupt()则抛出InterruptedException
//@throws:当timeout是负数时,抛出IllegalArgumentException
//@throws:当前线程如果不是对象monitor锁的持有者,抛出IllegalMonitorsStateException
public final native void wait(long timeout) throws InterruptedException;

//@throws:当线程处于等待前或等待中,调用interrupt()则抛出InterruptedException
//@throws:当timeout是负数时,抛出IllegalArgumentException
//@throws:当前线程如果不是对象monitor锁的持有者,抛出IllegalMonitorsStateException
public final native void wait(long timeout, long 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);
}

//@throws:当线程处于等待前或等待中,调用interrupt()则抛出InterruptedException
//@throws:当timeout是负数时,抛出IllegalArgumentException
//@throws:当前线程如果不是对象monitor锁的持有者,抛出IllegalMonitorsStateException
public final native void wait() throws InterruptedException{
wait(0);
}

//JVM调用此方法,可以将已经判定死亡的对象给捞回来,但只能一次
//@throws:Throwable
protected void finalize() throws Throwable{

}
}

异常

  1. CloneNotSupportedException:没有实现Cloneable接口,不支持克隆时,抛出此异常。
  2. IllegalMonitorsStateException:如果当前线程不是对象monitor锁的持有者,抛出此异常。
  3. InterruptedException:如果线程处于wait()前或中,调用interrupt()则抛出此异常
  4. IllegalArgumentException:如果等待时长为负数,抛出此异常
  5. Throwablefinalize()抛出

子类

java.lang.Object是所有类的父类。

-------------本文结束感谢您的阅读-------------

本文标题:java.lang.Object类

文章作者:DragonBaby308

发布时间:2019年07月25日 - 21:59

最后更新:2020年01月15日 - 22:59

原始链接:http://www.dragonbaby308.com/java-lang-Object/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

急事可以使用右下角的DaoVoice,我绑定了微信会立即回复,否则还是推荐Valine留言喔( ఠൠఠ )ノ
0%