我有一个问题,为什么在main方法调用printPersonPrinting()方法时隐式调用toString()方法.
public class PersonPrinting {
private String name;
private int age;
public PersonPrinting(String aName, int anAge) {
name = aName;
age = anAge;
}
public String toString() {
return name + " " + age;
}
public void printPersonPrinting() {
System.out.println(this);
}
public static void main (String [] args) {
PersonPrinting p = new PersonPrinting("Dan",10);
//printPersonPrinting is called, but toString isn't.
//But the output is formatted by toString method.
p.printPersonPrinting();
}
}
Run Code Online (Sandbox Code Playgroud)
此代码的输出是 - > Dan 10
谢谢!!
Moh*_*uag 11
这就是Java的工作方式.默认情况下,在其param对象上System.out.println()调用该toString()方法以将其转换为其字符串表示形式.
如果对象的类没有覆盖该toString()方法,则可能会得到类似的结果className@someHexadecimalNumber.(这是类中toString()方法的默认实现的结果Object)
因为System.out.println(this);调用
String.valueOf(this)
Run Code Online (Sandbox Code Playgroud)
反过来打电话
this.toString()
Run Code Online (Sandbox Code Playgroud)
基本上就是这样System.out.println(this.toString());.
System.out是一个PrintStream所以你可以看到PrintStream.println(Object)哪些(部分)
此方法首先调用
String.valueOf(x)获取打印对象的字符串值,然后表现为调用print(String)然后println().
| 归档时间: |
|
| 查看次数: |
185 次 |
| 最近记录: |