Object的公用方法们
如图所示,Object一共有10种方法:
下面详细描述:
1、public Object() 方法,默认构造函数方法,当新建一个Object对象的时候,调用这个方法向堆区申请一片内存;
2、private static native void registerNatives();方法,该方法是用naive修饰的,表明该方法的实现由c、c++完成,编译成dll文件,由java去调用,实现JAVA的JNI。
3、public final native Class<?> getClass(); 方法,该方法也是用native修饰的,有返回值,返回的是类对象Class类型。
4、public native int hashCode();方法,调用该方法返回该对象的哈希码值。
两个对象相等,那么它们的哈希码值一定相等。
如果两个对象的哈希码值相等,那么这两个对象不一定相等。
重写equals() 方法一定要重写 hashCode() 方法。
hashCode() 方法主要是方便集合元素的插入和删除的操作。当一个HashSet中需要新插入一个元素时,由于不允许有重复的元素,如果用equals() 方法去比较,那么效率很低。用hashCode() 方法直接返回该哈希码值,可以通过算法判断是否存在该对象。很大地提升效率。
5、public boolean equals(Object obj) {
return (this == obj);
}
用于比较对象是否相同,一般会重写。
6、protected native Object clone()方法;克隆对象,默认是浅客隆,如果对象的成员变量有对象,需要重写该方法进行深克隆,需要实现Cloneable才能调用clone方法,不然会抛出异常。
7、public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
将对象转换为可读的字符串,一般需要重写。
8、public final native void notify();唤醒阻塞队列中的一个线程。
public final native void notifyAll();唤醒阻塞队列中的所有线程。
9、public final native void wait(long timeout);//精确到毫秒
public final void wait(long timeout, int nanos);//精确到纳秒
public final void wait();阻塞线程。
10、protected void finalize(); 一般不建议使用该方法,虚拟机会自动清理对象,或者用try{}finally{}去释放资源。