在println中调用println方法

时间:2017-03-01 21:27:01

标签: java printing tostring

我刚写了这段代码:

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

为什么? 这种打印的顺序是什么?这背后的逻辑是什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

对toString的调用发生在" 11"打印。

原因(如@Tom所说),为了汇总字符串,它必须先创建所有部分,然后再进行汇总。

只有在String准备就绪后,它才会进入你的屏幕。

答案 1 :(得分:0)

当您调用函数时,Java会在实际进入该函数之前评估其所有参数。所以在你的情况下,它首先评估"11"+t。现在调用t.toString(),写入" new line"。然后toString返回" 4",并且连接到" 11",然后执行println以写" 11 4"

相关问题