为什么我们需要System类来调用out.println()方法?

时间:2011-05-25 06:40:21

标签: java

当我们想在控制台中打印行时,我们编写System.out.println(data),如果我们使用PrintStream对象并使用out.println(data)会有什么不同。

感谢。

7 个答案:

答案 0 :(得分:4)

System.out是对PrintStream“out”的静态引用。所以没有区别。

PrintStream out = System.out;
out.println("Badgers");

答案 1 :(得分:2)

  

为什么我们需要System类来调用out.println()方法?

我们没有。这只是获取PrintStream对象以便写入标准输出的便捷方式。

  

...如果我们使用PrintStream对象并使用out.println(data),会有什么不同。

这取决于您获取PrintStream对象的方式。

  • 如果您最初从PrintStreamSystem.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 outPrintstream类内部声明为println()方法签名,如下所示:public void println()

PrintStream是一个将数据流式传输到标准输出的类。通过在static类中添加finalSystem 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的快捷方式,但在大多数情况下你不应该这样做。