在Java中,java.lang.Object类是所有其他类的最终父类,称为根类。Object类中定义的方法都非常重要,具体方法说明如下:
(1)public final Class<?>getClass():返回该对象的运行时类对象(Class对象)。项目12讲反射机制时还会讲解。
(2)public int hash Code():该方法返回该对象的哈希码。Object类中该方法通过将该对象的内部地址转换成一个整数来实现,不同的对象返回不同的整数。项目9讲Hash Map类时还会涉及。
(3)public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。Object类中该方法是在非空对象引用上判断相等关系:对于任何非空引用值x和y,当且仅当x和y引用同一个对象(即x==y为true)时,此方法才返回true。当此方法被重写时,通常需要重写hashCode方法,以维护hashCode方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
(4)public final void notify():唤醒在此对象监视器上等待的单个线程。在项目6线程间通信中讲解。
(5)public final void notify All():唤醒在此对象监视器上等待的所有线程。在项目6线程间通信中讲解。
(6)public final void wait(long timeout)throws Interrupted Exception:在其他线程调用此对象的notify()方法或notify All()方法,或者超过指定的时间量前,导致当前线程等待。
(7)public final void wait(long timeout,int nanos)throws Interrupted Exception:在其他线程调用此对象的notify()方法或notify All()方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。此方法类似于一个参数的wait方法,但它允许更好地控制在放弃之前等待通知的时间量。用毫微秒度量的实际时间量可以通过以下公式计算出来:1000000*timeout+nanos。在其他所有方面,此方法执行的操作与带有一个参数的wait(long)方法相同。特别地,wait(0,0)与wait(0)相同。
(8)public final void wait()throws InterruptedException:在其他线程调用此对象的notify()方法或notify All()方法前,导致当前线程等待。换句话说,此方法的行为就好像它仅执行wait(0)调用一样。在项目6线程间通信中讲解。
(9)protected void finalize()throws Throwable:当没有对该对象有效的引用时,JVM通过垃圾回收器(GC)将该对象标记为释放状态;当垃圾回收器要释放一个对象的内存时,将调用该对象的finalize()方法。子类可以重写该方法,以配置系统资源或执行其他清除操作。
(10)public String toString():返回该对象的字符串表示。Object类中该方法返回的字符串由类名(对象是该类的一个实例)、at标记符“@”和此对象哈希码的无符号十六进制表示组成,即
getClass().get Name()+'@'+Integer.to HexString(hashCode())
为了更好地显示对象的信息,建议所有子类重写此方法。
【例4-5】
请设计一个类,重写toString方法,并测试。(www.xing528.com)
在Eclipse中,通常需要借助工具辅助生成Object类中的toString方法、hashCode方法和equals方法的代码。
在cn.linaw.chapter4.demo01包中,复制His Triangle3.java,粘贴到同一个包下,并重命名为His Triangle4.java,在His Triangle4类中重写toString方法,步骤如下:
步骤1:在His Triangle4.java代码区空白处点击鼠标右键,选择弹出菜单【Source】下的【Generate toString()】选项,如图4-16所示。
图4-16 找到“Generate toString()”
步骤2:在弹出的对话框中选择需要包含在方法中的属性,如图4-17所示。
图4-17 选择需要包含在方法中的属性
步骤3:点击【OK】按钮后即可生成默认代码,可以在此基础上修改。默认生成代码如图4-18所示。
图4-18 HisTriangle4类中重写toString方法
步骤4:通过测试类His Triangle4Test来演示Object类和子类重写后的toString方法,如图4-19所示。
图4-19 调用toString方法示例
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。