Java 为什么我们需要系统类来调用.println()方法?
当我们想在控制台中打印行时,我们编写System.out.println(数据),若我们使用PrintStream对象out和out.println(数据),会有什么不同Java 为什么我们需要系统类来调用.println()方法?,java,Java,当我们想在控制台中打印行时,我们编写System.out.println(数据),若我们使用PrintStream对象out和out.println(数据),会有什么不同 谢谢。系统。out是对打印流的静态引用。所以没有区别 PrintStream out = System.out; out.println("Badgers"); 无,但out通常用作程序中的变量,因此它可能不明确。完全没有区别。发件人: 在系统类内部是输出的声明,看起来像:公共静态最终打印流输出,在打印流类内部是printl
谢谢。
系统。out
是对打印流的静态引用。所以没有区别
PrintStream out = System.out;
out.println("Badgers");
无,但out
通常用作程序中的变量,因此它可能不明确。完全没有区别。发件人:
在系统
类内部是输出
的声明,看起来像:公共静态最终打印流输出
,在打印流
类内部是println()
的声明,其方法签名看起来像:public void println()
PrintStream
是一个将数据流传输到标准输出的类。通过在系统
类中添加静态
和最终
输出的对象来建立关联。因此,作为程序员,我们可以使用它作为系统。类名(System.out)
out是PrintStream
类的静态对象,println()
是PrintStream
类中的方法,它们是重载方法。因此,我们直接编写System.out.println(data)
System.out
是一个静态PrintStream
对象,它绑定到系统的一个特殊文件:标准输出。您可以将其引用分配给任何其他PrintStream
变量
为什么我们需要系统类来调用.println()方法
我们没有。这只是一种获取PrintStream
对象以写入标准输出的方便方法
。。。如果我们使用PrintStream对象out和out.println(数据),会有什么不同
这取决于您如何获得PrintStream
对象
- 如果最初从
System.out
或System.err
获取PrintStream
对象,则没有区别;e、 g.以下各项具有相同的效力:
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”
系统没有什么特别之处。in/out/err
。它们只是在JVM启动时初始化为特定流对象的公共静态final
变量。(好的,它们有点不寻常……但在这里没有体现出来。)println()
是PrintStream
类中的一个方法。out是PrintStream
类的对象,在System
类中定义为带有控制台地址的静态常量
因此,无论我们以何种方式调用该方法,它都是相同的
但是,如果您不想使用System
类,则需要通过提供标准的输出地址来创建PrintStream
对象。单词System.out.println
在过去被大量使用,以至于Java代码的每一个普通读者都知道它们的含义。每个人都这样写,人们已经习惯了
如果首先将System.out
赋值给局部变量,则代码可能更难读取。这是因为在每一行中,你都必须问自己:“嗯,有些东西被打印出来了,但是在哪里?”。另一方面,成语System.out.println
回答了这个问题。它从代码中清晰地显示为输出的内容(即使只是为了调试目的)
因此,是的,您可以使用System.out.println
的快捷方式,但在大多数情况下,您不应该这样做。导入静态java.lang.System.out
与别名一样有效,不必按照每个方法执行。