system.out.println()除了将输出打印到控制台之外还有其他用途吗?

kx1ctssn  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(406)

在一次采访中,我被问到以下问题:
System.out.println() 除了将输出打印到控制台之外,还有其他用途吗?

6qfn3psc

6qfn3psc1#

系统输出 System.out 是一个 static 类型的对象 PrintStream . 它包含对标准输出流的引用,通常是控制台。通常,当您希望在控制台应用程序中与用户交互或向用户显示消息、向控制台记录状态和错误消息时,打印到控制台非常有用。对于调试来说,打印出变量的值,并检查程序是否达到某个特定值是非常有用的 if-else 分支或循环。

system.err

还有一个对象称为 System.err 它包含对标准错误流的引用。它通常也是控制台,与 System.out 也有参考资料。因此,你可以写:

System.err.println("Message");

你会在控制台上收到一条消息,就像你以前使用的一样 System.out . 但是 err 通常建议打印错误消息。

重定向

虽然 System.out 保存对控制台的引用 System 类提供了一个名为 setOut() :

public void setOut(PrintStream out)

同样,也有一些方法 setErr(PrintStream) 甚至是 setIn(InputStream) 哪些可以用来改变 out , errin 要引用不同的流(如文件),您可以执行以下操作:

PrintStream standardOut = System.out;
PrintStream fileOut = new PrintStream(new File("filename.txt");
System.setOut(fileOut);

System.out.println("Hello World!") // This will output to the file

System.setOut(standardOut); // Reset to the standard output stream

printstream的其他方法

除了 println , PrintStream 定义如下方法 printfformat 这也允许你格式化你的输入,就像用c语言一样。这两种方法是相同的:

int n1 = 10, n2 = 20;
int sum = n1 + n2;
System.out.printf("%d + %d = %d", n1, n2, sum);
System.out.format("%d + %d = %d", n1, n2, sum);
muk1a3rh

muk1a3rh2#

严格地说,这份声明 System.out.println("xyz") 除了写入传递的字符串之外,没有其他用途( xyz )和一个行分隔符( System.lineSeparator() )到 PrintStream 分配给 System.out .
注意,上面的语句中没有提到控制台。因为可以重新分配“标准”输出流( System.out ),我们可以通过执行 System.out.println("xyz") .
以下是一个例子:

PrintStream fileOut = new PrintStream(new FileOutputStream("output.txt"), true);

PrintStream console = System.out; // store current System.out
System.setOut(fileOut);

System.out.println("This will be written to output.txt");

相关问题