System.out.println()是一个字段的方法?

时间:2010-01-09 17:01:57

标签: java

如果out是System类的字段。你怎么能在字段中使用println()方法?这个println()方法来自哪里,我无法在System类中找到它。

9 个答案:

答案 0 :(得分:8)

System.outPrintStream类的公共实例:

http://java.sun.com/j2se/1.4.2/docs/api/java/io/PrintStream.html

答案 1 :(得分:4)

inouterr都是java.lang.System的公共静态字段。没有什么可以阻止你将字段标记为public,尽管通常它被认为是不好的形式(改为使用getter和setter)。

System.out属于PrintStream类型,提供println方法。

作为起点:http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#out

答案 2 :(得分:4)

因为System.out是(对实例的引用)PrintStream,所以 我们可以将System.out.println()写为:

    PrintStream output = System.out;
    output.println();

答案 3 :(得分:1)

System.out属于PrintStream类型,其println()方法。

您可以在http://java.sun.com/j2se/1.4.2/docs/api/java/io/PrintStream.html找到PrintStream的所有方法。

以下是系统的字段和方法:http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html

更一般地说,字段只是Object的成员,因此它可以是任何类型。如果它是一个公共字段,那么客户端代码就可以访问它,尽管通常认为通过getter方法可以访问字段而不是直接访问是更好的做法(但在这种情况下,想象一下,如果每次都必须编写System.getOut().println()你想写标准输出!)。

答案 4 :(得分:1)

System.outSystem的成员,好的,但也是对PrintStream实例的引用。来自消息来源:

public final static PrintStream out = nullPrintStream();

PrintStreamjava.io中的一个类,其方法为println()。有关详细信息,请参阅JavaDocs java.io.PrintStream.println()

答案 5 :(得分:1)

如果某个字段是公开的并且是Object,则能够在其上调用方法并不令人惊讶。为什么会这样?

System类的特定情况下,out字段是PrintStream类型的公共静态字段(它静态保存PrintStream的实例一个println()方法)这就是javadoc所说的:

  

“标准”输出流。这个   流已经打开并准备好了   接受输出数据。通常这个   stream对应于显示输出   或另一个输出目的地   由主机环境指定或   用户。

     

对于简单的独立Java   应用程序,一种典型的编写方式   输出数据行是:

     System.out.println(data)
     

请参阅课程中的println方法   PrintStream

答案 6 :(得分:1)

如您所知,

System是一个类,out是类型System的类PrintStream的静态变量,即System类{{1}声明为:

out

这也意味着public static final PrintStream out; 是类out的一个实例,因此它可以访问类PrintStream中定义的方法。

因此,当我们访问类PrintStream之外的静态变量out时,我们写

System

并访问类System.out 的{​​{1}}或print等方法,我们写

println

因为PrintStream(或System.out.print() )只是一个指向类System.out对象的变量,如上所述。

我们也可以写

out

答案 7 :(得分:0)

System.out是PrintStream对象的静态实例。

答案 8 :(得分:0)

通常,当你有一个非原始数据类型的字段时,你必须检查字段的类,而不是拥有该字段的类,以检查可用的方法。

因此,在这种情况下,即使班级System有一个静态字段out,该字段的类型也是PrintStream,而不是System,而这又是out拥有{{1}}的类。