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{}去释放资源。

原文地址:https://www.cnblogs.com/fankongkong/p/5527139.html