我刚写了这段代码:
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
为什么? 这种打印的顺序是什么?这背后的逻辑是什么?
谢谢!
答案 0 :(得分:2)
对toString的调用发生在" 11"打印。
原因(如@Tom所说),为了汇总字符串,它必须先创建所有部分,然后再进行汇总。
只有在String准备就绪后,它才会进入你的屏幕。
答案 1 :(得分:0)
当您调用函数时,Java会在实际进入该函数之前评估其所有参数。所以在你的情况下,它首先评估"11"+t
。现在调用t.toString(),写入" new line"。然后toString返回" 4",并且连接到" 11",然后执行println以写" 11 4"