这是在写junit测试的时候发现的。
1 import java.io.ByteArrayOutputStream; 2 import java.io.PrintStream; 3 4 public class Test { 5 public static void main(String[] args) { 6 PrintStream out=System.out; 7 ByteArrayOutputStream outContent = new ByteArrayOutputStream(); 8 System.setOut(new PrintStream(outContent)); 9 System.out.println("hello");10 System.setOut(out);11 System.out.println(outContent.toString().equals("hello\n"));12 outContent.reset();13 System.setOut(new PrintStream(outContent));14 System.out.print("hello\n");15 System.setOut(out);16 System.out.println(outContent.toString().equals("hello\n"));17 } 18 }
上面这段程序输出的结果是false true。这意味着System.out.println()与System.out.print("\n")输出的字符还是有差别的。如果要将输出重定向到str用于测试是否相等的话,需要注意这一点。