Object有哪些公用方法?

public class ObjectDemo {
    public static void main(String[] args) {
        Object object = new Object();

        /**
         * public final Class getClass()
         * 返回此对象运行时类的 Class 对象。
         */
        System.out.println(object.getClass()); //class java.lang.Object

        /**
         * public int hashCode()
         * 返回此对象的一个哈希码值。
         */
        System.out.println(object.hashCode());//1987462029
        /**
         * public boolean equals(Object obj)
         * 如果此对象与 obj 参数相同,则返回 true;否则返回 false。
         */
        System.out.println(object.equals(new Object()));//false
        /**
         * public String toString()
         * 返回该对象的字符串表示形式。
         */
        System.out.println(object.toString());//java.lang.Object@7676438d
        /**
         * public final void notify()
         * 唤醒在此对象监视器上等待的单个线程。
         * 如果所有线程都在此对象上等待,则会选择唤醒其中一个线程。
         * 选择是任意性的,并在对实现做出决定时发生。
         */
        try {
            object.wait();
            //object.wait(10000);
            //object.wait(10000, 10000);
        } catch (InterruptedException e) {//如果当前线程不是此对象监视器的所有者。
            e.printStackTrace();
        }
        /**
         * notify()和notifyAll()都是Object对象用于通知处在等待该对象的线程的方法。
         * 两者的最大区别在于: 
 *          notifyAll使所有原来在该对象上等待被notify的线程统统退出wait的状态,变成等待该对象上的锁,一旦该对象被解锁,他们就会去竞争。 
 *          notify则文明得多他只是选择一个wait状态线程进行通知,并使它获得该对象上的锁,但不惊动其他同样在等待被该对象notify的线程们,
 *              当第一个线程运行完毕以后释放对象上的锁此时如果该对象没有再次使用notify语句,则即便该对象已经空闲,
 *              其他wait状态等待的线程由于没有得到该对象的通知,继续处在wait状态,
 *              直到这个对象发出一个notify或notifyAll,它们等待的是被notify或notifyAll,而不是锁。 
         */
        object.notify();  
        //object.notifyAll(); 
    }
}

你可能感兴趣的:(java基础)