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