【问题标题】:What is System, out, println in System.out.println() in Java [duplicate]Java中System.out.println()中的System,out,println是什么[重复]
【发布时间】:2012-08-17 08:15:51
【问题描述】:

可能重复:
What's the meaning of System.out.println in Java?

我一直在寻找 Java 中 System.out.println()Systemoutprintln 的答案。我搜索并找到了一个不同的答案,如下所示:

  • System 是 java.lang 包中的一个内置类。 这个类有一个final修饰符,这意味着它不能被其他类继承。 它包含预定义的方法和字段,提供标准输入、输出等功能。

  • out 是 System 类中的静态 final 字段(即变量),属于 PrintStream 类型(内置类,包含打印不同数据值的方法)。 静态字段和方法必须使用类名来访问,所以( System.out )。

  • 这里的out表示类型PrintStream类的引用变量。

  • println() 是 PrintStream 类中用于打印数据值的公共方法。 因此要访问 PrintStream 类中的方法,我们使用 out.println() (因为非静态方法和字段只能通过使用 refrence 变量来访问)

在另一个页面中,我发现另一个对比定义为

System.out.print 是 java 中使用的标准输出函数。其中 System 指定包名,out 指定类名,print 是该类中的函数。

我对这些感到困惑。谁能告诉我它们是什么?

【问题讨论】:

  • 我觉得第一个解释比较清楚一些,你可以随时浏览源代码自己看,例如public final static PrintStream out = nullPrintStream();
  • 第二个解释是完全错误的。
  • @Less 第二个解释是错误的,因为System 是一个类,而不是一个包,而out 是一个字段,而不是一个类。
  • 我同意你们两个,将关闭标记为第一个问题的欺骗。

标签: java system.out


【解决方案1】:

Systemjava.lang 包中的最后一个类。

out 是在System 类中声明的PrintStream 类型的类变量。

printlnPrintStream 类的一个方法。

【讨论】:

  • 这应该是正确答案
【解决方案2】:

当您感到困惑时,我建议您首先咨询Javadoc 以进行澄清。

来自关于 System 的 javadoc,文档是这样说的:

public final class System
extends Object

The System class contains several useful class fields and methods. It cannot be instantiated.
Among the facilities provided by the System class are standard input, standard output, and error output streams; access to externally defined properties and environment variables; a means of loading files and libraries; and a utility method for quickly copying a portion of an array.

Since:
JDK1.0

关于System.out

public static final PrintStream out
The "standard" output stream. This stream is already open and ready to accept output data. Typically this stream corresponds to display output or another output destination specified by the host environment or user.
For simple stand-alone Java applications, a typical way to write a line of output data is:

     System.out.println(data)

【讨论】:

  • 当您了解 Javadoc 的内容后,就可以查阅 Javadoc。但如果你不呢?例如,新手可能不理解标准输出和错误输出流的概念,并且流已经打开并准备好接受输出数据。当然,新手可能会在谷歌上搜索这个概念,但这通常会导致他无限理解的新概念。我并不是说 Javadocs 有什么问题。我只是指出新手可能遇到的困难。这就是为什么他经常求助于 SO 以用他能理解的语言获得解释。
  • @BobUeland:当你不理解某事时,IMO,最好的方法是查看它的文档,而不是查看人们对同一事物的解释。当人们用自己的话解释官方文件时,有时这本身可能会成为混乱的根源。我的意思是有很多方法可以用你自己的话来解释同一件事,如果有很多答案,那么它本身令人困惑的可能性就很高。
  • 我同意你的观点,但是不懂文档的新手想要/需要这样的东西:“看看 System.out.println()。第一个以大写字母开头,所以它是一个类. 第三个有()所以是方法。第二个是小写字母开头没有(),所以是字段。你想打印一些东西,但必须找到可以为你完成工作的人。你不认识那个人,只要你知道 System,他有一个字段被调用,指向那个人。所以你知道 System.out 指向那个人,你知道这个人有 println() 方法。
【解决方案3】:

您发布的第一个答案(系统是一个内置类...)非常准确。

您可以添加 System 类包含大部分是本机的并且由 JVM 在启动期间设置,例如将 System.out 打印流连接到与“标准输出”关联的本机输出流(控制台)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 2014-02-28
    • 2010-10-31
    相关资源
    最近更新 更多