这似乎是一个非常基本的问题,但是我什至不理解为什么我什至没有实例化为什么toString方法在屏幕上打印时,我才实例化了一个Car对象。谢谢
public class Car {
public void m1() {
System.out.println("car 1");
}
public void m2() {
System.out.println("car 2");
}
public String toString() {
return "vroom";
}
}
public static void main(String[] args) {
Car myCar = new Car();
System.out.println(myCar);
}
答案 0 :(得分:1)
String.valueOf(Object)
方法被隐式调用,请参见println(Object x)
的{{3}}:
打印一个对象,然后终止该行。此方法调用 首先String.valueOf(x)获取打印对象的字符串值,然后 就像先调用print(String)然后调用println()一样。
和String.valueOf(Object obj)
中的doc:
如果参数为null,则为等于“ null”的字符串;否则, 返回obj.toString()的值。
答案 1 :(得分:0)
此行System.out.println(myCar)
在内部调用toSring
方法,因为println
首先调用String.valueOf(myCar)
来获取打印对象的字符串值。如果myCar.toString()
不是myCar
,则valueOf
使用null
。
所以整个流程是这样的:
System.out.println(myCar)
> String.valueOf(myCar)
> myCar.toString()
答案 2 :(得分:0)
由于没有std::list::iterator
方法,因此Java编译器会选择最接近的匹配项,即System.out.println(Object)
。这会在您传递的内容上调用String.valueOf
,以获取要打印的字符串版本。 System.out.println(Car)
使用对象的String.valueOf
方法获取字符串。从其文档中:
返回:
如果参数为
toString
,则字符串等于null
;否则,将返回"null"
的值。