今天剖析的方法有:toString()方法,notify()方法,notifyAll()方法,wait()方法,wait(args)方法,wait(args,args)方法,finalize()方法。
第6个方法:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
该方法为被public修饰,所有对象都可见。
该方法返回对象的字符串表示形式,开发人员能够清晰的看到一个对象的各种属性。在官方建议上,建议所有的方法都重写这个方法。Eclipse有代码生成器,可以方便的重写该方
法。
看方法体的内容,可以知道,最终返回getClass().getName() + ' @' + Integer.toHexString(hashCode())。下面用一个例子看一下:
举例:
package edu.java.test;
public class TestToString {
public static void main(String[] args) {
TestClone tc = new TestClone();
tc.setName("my name is java");
tc.setAge("70 yeas");
System.out.println("未重写之前的toString方法:"+tc.getClass().getName()+"@"+Integer.toHexString(tc.hashCode()));
System.out.println("重写之后的toString方法:"+tc.toString());
}
}
上面示例了两个打印语句,一个是原生态的toString方法,一个是重写后的toString方法。下面是结果:
未重写之前的toString方法:edu.java.test.TestClone@1e57e8f
重写之后的toString方法:TestClone [name=my name is java, age=70 yeas]
可以看出,原生态的toString方法,不能很好的显示出对象的属性,所以在toString源码里,java开发人员建议每个类都应该重写toString方法的原因。下面是重写后的toString方法。
@Override
public String toString() {
return "TestClone [name=" + name + ", age=" + age + "]";
}
第7个方法:wait()
public final void wait() throws InterruptedException {
wait(0);
}