Object类上的方法

1.getClass:java

public final native Class<?> getClass();数组

返回当前对象运行时的类的对象。数据结构

2.hashCode:性能

public native int hashCode();this

这个方法是为哈希表这种数据结构提供支持的。(例如HashMap)spa

hashcode 的通用约定为:线程

1)在一个java应用中在同一个对象上调用屡次hashCode方法应该返回一样的int结果。code

可是int结果没必要保持一致性在同一个java应用的两次执行中。对象

2)若是两个对象是相等的(equals方法返回true),则hashCode方法必须返回相同的int结果。接口

3)若是两个对象经过equals方法不相等,不要求他们的hashCode方法必须返回不一样的int结果,可是

不一样对象上返回不一样的hashCode能够提升哈希表的性能(缩短链表的长度)。

3.equals:

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

4.clone:

protected native Object clone() throws CloneNotSupportedException;

注意两点:第一此方法是protected,只有子类能够调用;第二,子类必须实现Cloneable接口,否则此方法会抛出CloneNotSupportedException异常。

全部数组默认为实现了Cloneable接口,因此数组都有clone方法。另外,这个方法是建立一个新的对象,而且使用被拷贝的对象的属性值来初始化新对象的属性。

而并非将属性也拷贝一份。因此此方法是一个浅拷贝,并非深拷贝。

5.toString:

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

6.notify:

public final native void notify();

唤醒一个正在等待此对象上的线程。若是有多个等待线程,则任意挑选一个唤醒。具体挑选哪一个依赖具体实现。

被唤醒的线程不会当即执行,直到当前线程释放对象上的锁。被唤醒的线程还要和其余想要获取锁的线程竞争锁。

此方法只能被已经获取对象上的锁的线程调用。

7.notifyAll:

public final native void notifyAll();

唤醒全部等待在此对象上的线程。其余和notify方法同样。

8.wait:

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

致使当前线程进入等待状态直到被唤醒(notified或者interrupted),此方法和调用wait(0L, 0)效果同样。

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

9.finalize

此方法在java9中已经申明为Deprecated,并且在其余版本中也极不推荐使用,因此不作介绍了。

相关文章
相关标签/搜索