当我们想在控制台中打印行时,我们编写System.out.println(data),如果我们使用PrintStream对象并使用out.println(data)会有什么不同。
感谢。
答案 0 :(得分:4)
System.out
是对PrintStream
“out”的静态引用。所以没有区别。
PrintStream out = System.out;
out.println("Badgers");
答案 1 :(得分:2)
为什么我们需要System类来调用out.println()方法?
我们没有。这只是获取PrintStream
对象以便写入标准输出的便捷方式。
...如果我们使用PrintStream对象并使用out.println(data),会有什么不同。
这取决于您获取PrintStream
对象的方式。
如果您最初从PrintStream
或System.out
获得了System.err
个对象,则没有区别;例如以下具有相同的效果:
public void sayHello(PrintStream ps) {
ps.println("hello");
}
sayHello(System.out);
System.out.println("hello");
如果您在自己打开的流上创建了PrintStream,行为将是类似的,但输出(很可能)会转到另一个地方; e.g。
sayHello(new PrintStream(new FileOutputStream("foo.txt"));
会将“hello”写入指定文件。
System.in/out/err
没有什么特别之处。它们只是public static final
变量,在JVM启动时初始化为特定的流对象。 (好吧,他们有些不寻常......但是这里没有表现出来。)
答案 2 :(得分:1)
绝对没有区别。来自ProgrammerInterview.com:
System
类内部的out
声明如下:public static final PrintStream out
,Printstream
类内部声明为println()
方法签名,如下所示:public void println()
。
PrintStream
是一个将数据流式传输到标准输出的类。通过在static
类中添加final
和System
out 对象来建立关联。所以我们作为程序员可以使用它作为System,类名(System.out)
out是PrintStream
类的静态对象,而println( )
是PrintStream
类中的方法,它们是重载方法。所以我们直接写System.out.println(data)
。
答案 3 :(得分:1)
System.out
是一个静态PrintStream
对象,它绑定到System的特殊文件:标准输出。您可以将其引用分配给任何其他PrintStream
变量。
答案 4 :(得分:0)
无,但out
通常用作程序中的变量,因此可能不明确。
答案 5 :(得分:0)
println()
是PrintStream
类中的方法。 out是PrintStream
类的对象,它在System
类中定义为静态常量,其地址为console。
所以,无论如何我们调用该方法都是一样的。
但是如果您不想使用System
类,则需要通过提供标准输出地址来创建PrintStream
对象。
答案 6 :(得分:0)
过去曾经使用过System.out.println
这个词,以至于Java代码的每个随意读者都知道它们的含义。每个人都这样写,人们已经习惯了。
如果您首先将System.out
分配给局部变量,则代码可能会更难阅读。这是因为在每一行中你都要问自己:“好吧,有些东西会打印出来,但在哪里?”。另一方面,成语System.out.println
回答了这个问题。它明显地从代码中伸出来作为输出内容(即使它仅用于调试目的)。
是的,你可以使用System.out.println
的快捷方式,但在大多数情况下你不应该这样做。