object是java中所有类的默认父类,里面有11个默认方法。意即所有的类都会默认继承11个方法。1.public final Class<?ectends Object> getClass()返回一个运行时的类
2.public int hashCode()返回对象的哈希码;
3.public Boolean equals(Object o)比较对象是否相等;
4.protect Object clone()返回对象的副本;要声明实现Clonable,要有异常处理,只能在其子类或类内用;当克隆一份对象时,其对象属性只是克隆了一份指向另一个对象的地址值;
5.public String toString()返回对象的字符串表示;打印一个对象默认调用其默认toString()方法;
6.public final void notify()唤醒在此对象监视器上等待的单个线程;
7.public final void notifyAll()唤醒在此对象监视器上的所有线程;
8.protected void finalize()当垃圾回收器确定不存在对该对象的更多引用时,调用此方法回收对象;
9.public final void wait(long timeout)导致当前线程等待,直到其他线程调用此对象的notify()或notifyAll()方法或时间超时;
10.public final void wait(long timeout, int nanos)或其他线程中断当前线程,或超过实际时间:1000000*timeout+nanos;
11.public final void wait()导致当前线程等待,直到其他线程调用此对象的notify()或notifyAll()方法;
在这里11个方法中最常用的方法是hashCode()和equals()方法。hashCode()方法就像是给一堆人不同的房间编码,然后equals()方法就是给每个人唯一的一个身份标识。这两个方法是用来方便给对象分配内存进行管理的,就像是管理一批货品,先给他们分配一些不同的仓库进行分别的存储,然后找到他们时就可以先按他们的仓库编号找到存储他们的仓库,寻找效率便能大大提高。由于仓库号可以相同,而身份标识唯一,所以当equals()相同,hashCode()必然相同。 这里还要注意一下clone()只是浅复制,即若属性是个对象类型则只得到一个地址值,若要深度复制则只能自己另行复制。
网友评论