Print和println不会同时执行

时间:2015-06-16 08:10:02

标签: java jsp servlets printing println

我的servlet中有一个方法,我在控制台上有一些打印件。

   private void collectingWorkPositions(HttpSession session, HttpServletRequest request)
   {       
     System.out.println("Collecting1..");

     //code...                

     System.out.println("Collecting2..");

     //code...

     System.out.print("printing p: ");
     for(Integer i:p)
         System.out.print(i + " ");
   }

当这个方法被调用时,只有

Collecting1..
Collecting2..

打印在控制台中。当我刷新JSP页面时,只有最后一个打印(没有ln)被打印。我知道这两者之间的区别在于println将在print将在同一行打印的新行上打印,那么为什么在同一行动中不会发生这种情况呢?

2 个答案:

答案 0 :(得分:4)

这与您永远不会终止该行的事实有关。 这可能与java没有刷新有关,也可能与日志处理程序有关,直到写入日志之前等到行尾。

在最后添加最终System.out.println()System.out.print('\n')以修复它。

答案 1 :(得分:3)

System.out(作为c ++中的cout和C中的stdout)被缓冲(缓冲流)。 当缓冲区已满或找到“换行符”字符时,系统会刷新缓冲区的内容。

println包含换行符,但打印不包含。如果您想强制发送内容,请包含:

System.out.flush();
在for语句之后