如果out是System类的字段。你怎么能在字段中使用println()方法?这个println()方法来自哪里,我无法在System类中找到它。
答案 0 :(得分:8)
System.out
是PrintStream
类的公共实例:
http://java.sun.com/j2se/1.4.2/docs/api/java/io/PrintStream.html
答案 1 :(得分:4)
in
,out
和err
都是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.out
是System
的成员,好的,但也是对PrintStream
实例的引用。来自消息来源:
public final static PrintStream out = nullPrintStream();
PrintStream
是java.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}}的类。