我的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
将在同一行打印的新行上打印,那么为什么在同一行动中不会发生这种情况呢?
答案 0 :(得分:4)
这与您永远不会终止该行的事实有关。 这可能与java没有刷新有关,也可能与日志处理程序有关,直到写入日志之前等到行尾。
在最后添加最终System.out.println()
或System.out.print('\n')
以修复它。
答案 1 :(得分:3)
System.out(作为c ++中的cout和C中的stdout)被缓冲(缓冲流)。 当缓冲区已满或找到“换行符”字符时,系统会刷新缓冲区的内容。
println包含换行符,但打印不包含。如果您想强制发送内容,请包含:
System.out.flush();
在for语句之后。