以下代码中打印的以下System.out是什么?
class ExampleTest {}
public class Test {
public static void main(String ... strings){
ExampleTest et=new ExampleTest();
System.out.println(et);
System.out.println(new ExampleTest());
}
}
答案 0 :(得分:4)
当您将任何对象提供给打印方法时(例如代码中),它将调用toString()
方法。
在您的示例中,您的ExampleTest
课程未覆盖此toString()
方法,因此会调用Object.toString()
:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
因此输出将是类的全名,以及此类的hashCode
的结果。
以下是Javadoc of java.lang.Object.toString()对此的说法:
返回的字符串表示形式 宾语。一般来说,toString method返回一个字符串 “文字表示”这个对象。 结果应该是简洁但是 信息表示即 一个人容易阅读。它是 建议所有子类 覆盖此方法。
类Object的toString方法 返回由。组成的字符串 对象的类的名称 是一个实例,即符号字符 `@'和无符号十六进制 表示哈希码的 宾语。换句话说,这种方法 返回一个等于该值的字符串 的:
getClass().getName() + '@' + Integer.toHexString(hashCode())
答案 1 :(得分:1)
它打印类名后跟@
符号,后跟对象哈希码的无符号十六进制表示。