print 和 println 不是同时执行的

Print and println aren't executed in the same time

我的 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 将在同一行打印,那么为什么这不会在同一操作中发生?

这与您从不终止线路有关。 这要么与 java 不刷新有关,要么与日志处理程序在写入日志之前一直等到行尾有关。

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

System.out(如 c++ 中的 cout 和 C 中的 stdout)被缓冲(缓冲流)。 当缓冲区已满或发现 "newline" 字符时,系统刷新缓冲区的内容。

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

System.out.flush();

for 语句之后。