内的println方法,我只是写了这个代码:调用的println
public class T
{
public String toString()
{
System.out.println("new line");
return " "+4;
}
}
和:
public static void main(String[] args)
{
T t = new T();
System.out.println("11"+t);
}
,虽然我希望它打印
11 new line
4
它实际上印刷:
new line
11 4
这是为什么? 这种印刷的顺序是什么?这背后的逻辑是什么?
谢谢!
你的程序应该如何连接字符串'“11”+ t'在调用' String.valueOf(Object)'for't'(它自己在该对象上调用'toString')?没错,在String串联之前它不能这么做,因此显然在将这个串联的字符串从'main'方法传递给'println'之前。 – Tom
因为在第二次调用'println'之前评估'“11”+ t'。 –
使用调试器并遍历代码,您将很快了解执行顺序。 – Andreas