http://lavasoft.blog.51cto.com/62575/15456/
java.lang
类 Object
java.lang.Object
public class Object
-
从以下版本开始:
- JDK1.0 另请参见:
-
Class
构造方法摘要 | |
---|---|
Object() |
方法摘要 | |
---|---|
protected Object | clone() 创建并返回此对象的一个副本。 |
boolean | equals(Object obj) 指示某个其他对象是否与此对象“相等”。 |
protected void | finalize() 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 |
Class<? extendsObject> | getClass() 返回一个对象的运行时类。 |
int | hashCode() 返回该对象的哈希码值。 |
void | notify() 唤醒在此对象监视器上等待的单个线程。 |
void | notifyAll() 唤醒在此对象监视器上等待的所有线程。 |
String | toString() 返回该对象的字符串表示。 |
void | wait() 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。 |
void | wait(long timeout) 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。 |
void | wait(long timeout, int nanos) 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。 |
构造方法详细信息 |
---|
Object
public Object()
方法详细信息 |
---|
getClass
public final Class<? extends Object> getClass()
- 返回一个对象的运行时类。该 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
-
-
返回:
-
表示该对象的运行时类的
java.lang.Class
对象。此结果属于类型Class<? extends X>
,其中 X 表示清除表达式中的静态类型,该表达式调用getClass
。
-
表示该对象的运行时类的
hashCode
public int hashCode()
-
返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,
java.util.Hashtable
提供的哈希表。- 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。
- 如果根据 equals(Object) 方法,两个对象是相等的,那么在两个对象中的每个对象上调用
hashCode
方法都必须生成相同的整数结果。 - 以下情况不 是必需的:如果根据
equals(java.lang.Object)
方法,两个对象不相等,那么在两个对象中的任一对象上调用 hashCode 方法必定会生成不同的整数结果。但是,程序员应该知道,为不相等的对象生成不同整数结果可以提高哈希表的性能。
-
-
返回:
- 此对象的一个哈希码值。 另请参见:
-
equals(java.lang.Object)
,Hashtable
equals
public boolean equals(Object obj)
-
指示某个其他对象是否与此对象“相等”。
- 自反性:对于任何非空引用值
x
,x.equals(x)
都应返回true
。 - 对称性:对于任何非空引用值
x
和y
,当且仅当y.equals(x)
返回true
时,x.equals(y)
才应返回true
。 - 传递性:对于任何非空引用值
x
、y
和z
,如果x.equals(y)
返回true
,并且y.equals(z)
返回true
,那么x.equals(z)
应返回true
。 - 一致性:对于任何非空引用值
x
和y
,多次调用 x.equals(y) 始终返回true
或始终返回false
,前提是对象上equals
比较中所用的信息没有被修改。 - 对于任何非空引用值
x
,x.equals(null)
都应返回false
。
- 自反性:对于任何非空引用值
-
-
参数:
-
obj
- 要与之比较的引用对象。
返回:
-
如果此对象与 obj 参数相同,则返回
true
;否则返回false
。
另请参见:
-
hashCode()
,Hashtable
-
clone
protected Object clone() throws CloneNotSupportedException
-
创建并返回此对象的一个副本。“副本”的准确含义可能依赖于对象的类。一般来说,对于任何对象
x,如果表达式:
x.clone() != x
x.clone().getClass() == x.getClass()
x.clone().equals(x)
-
-
返回:
- 此实例的一个克隆。 抛出:
-
CloneNotSupportedException
- 如果对象的类不支持Cloneable
接口,则重写clone
方法的子类也会抛出此异常,以指示无法克隆某个实例。
另请参见:
-
Cloneable
toString
public String toString()
-
返回该对象的字符串表示。通常,
toString
方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂。建议所有子类都重写此方法。getClass().getName() + '@' + Integer.toHexString(hashCode())
-
-
返回:
- 该对象的字符串表示形式。
notify
public final void notify()
-
唤醒在此对象监视器上等待的单个线程。如果所有线程都在此对象上等待,则会选择唤醒其中一个线程。选择是任意性的,并在对实现做出决定时发生。线程通过调用其中一个
wait
方法,在对象的监视器上等待。- 通过执行此对象的同步 (Sychronized) 实例方法。
- 通过执行在此对象上进行同步的
synchronized
语句的正文。 - 对于
Class
类型的对象,可以通过执行该类的同步静态方法。
-
-
抛出:
-
IllegalMonitorStateException
- 如果当前的线程不是此对象监视器的所有者。
另请参见:
-
notifyAll()
,wait()
-
notifyAll
public final void notifyAll()
-
唤醒在此对象监视器上等待的所有线程。线程通过调用其中一个
wait
方法,在对象的监视器上等待。 -
-
抛出:
-
IllegalMonitorStateException
- 如果当前的线程不是此对象监视器的所有者。
另请参见:
-
notify()
,wait()
-
wait
public final void wait(long timeout) throws InterruptedException
-
导致当前的线程等待,直到其他线程调用此对象的
notify()
方法或notifyAll()
方法,或者超过指定的时间量。- 其他某个线程调用此对象的 notify 方法,并且线程 T 碰巧被任选为被唤醒的线程。
- 其他某个线程调用此对象的 notifyAll 方法。
- 其他某个线程
中断
线程 T。 - 已经到达指定的实际时间。但是,如果 timeout 为零,则不考虑实际时间,该线程将一直等待,直到获得通知。
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout); ... // Perform action appropriate to condition }
(有关这一主题的更多信息,请参阅 Doug Lea 撰写的《Concurrent Programming in Java (Second Edition)》(Addison-Wesley, 2000) 中的第 3.2.3 节或 Joshua Bloch 撰写的《Effective Java Programming Language Guide》(Addison-Wesley, 2001) 中的第 50 项。 -
-
参数:
-
timeout
- 要等待的最长时间(以毫秒为单位)。
抛出:
-
IllegalArgumentException
- 如果超时值为负。 -
IllegalMonitorStateException
- 如果当前的线程不是此对象监视器的所有者。 -
InterruptedException
- 如果在当前线程等待通知之前或者正在等待通知时,另一个线程中断了当前线程。在抛出此异常时,当前线程的 中断状态 被清除。
另请参见:
-
notify()
,notifyAll()
-
wait
public final void wait(long timeout, int nanos) throws InterruptedException
-
导致当前的线程等待,直到其他线程调用此对象的
notify()
方法或notifyAll()
方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。1000000*timeout+nanos
- 其他线程通过调用
notify
方法,或notifyAll
方法通知在此对象的监视器上等待的线程醒来。 timeout
毫秒值与nanos
毫微秒参数值之和指定的超时时间已用完。
synchronized (obj) { while (<condition does not hold>) obj.wait(timeout, nanos); ... // Perform action appropriate to condition }
此方法只应由作为此对象监视器的所有者的线程来调用。请参阅notify
方法,了解线程能够成为监视器所有者的方法的描述。 - 其他线程通过调用
-
-
参数:
-
timeout
- 要等待的最长时间(以毫秒为单位)。 -
nanos
- 额外时间(以毫微秒为单位,范围是 0-999999)。
抛出:
-
IllegalArgumentException
- 如果超时值是负数,或者毫微秒值不在 0-999999 范围内。 -
IllegalMonitorStateException
- 如果当前线程不是此对象监视器的所有者。 -
InterruptedException
- 如果在当前线程等待通知之前或者正在等待通知时,其他线程中断了当前线程。在抛出此异常时,当前线程的 中断状态 被清除。
-
wait
public final void wait() throws InterruptedException
-
导致当前的线程等待,直到其他线程调用此对象的
notify()
方法或notifyAll()
方法。换句话说,此方法的行为就好像它仅执行 wait(0) 调用一样。synchronized (obj) { while (<condition does not hold>) obj.wait(); ... // Perform action appropriate to condition }
此方法只应由作为此对象监视器的所有者的线程来调用。请参阅notify
方法,了解线程能够成为监视器所有者的方法的描述。 -
-
抛出:
-
IllegalMonitorStateException
- 如果当前的线程不是此对象监视器的所有者。 -
InterruptedException
- 如果在当前线程等待通知之前或者正在等待通知时,另一个线程中断了当前线程。在抛出此异常时,当前线程的 中断状态 被清除。
另请参见:
-
notify()
,notifyAll()
-
finalize
protected void finalize() throws Throwable
-
当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写
finalize
方法,以配置系统资源或执行其他清除。 -
-
抛出:
-
Throwable
- 此方法抛出的Exception
-