-2

当我们调用时, System.out.println("aaa"); 我们没有实例化 Class 的对象System

并且System不是静态类。在文档中,它只说Systempublic final.

所以我的问题是为什么我们可以System用作静态类?

4

4 回答 4

1

System 类包含几个有用的类字段和方法。它不能被实例化。

System 类提供的设施包括标准输入、标准输出和错误输出流;访问外部定义的属性和环境变量;一种加载文件和库的方法;以及一种用于快速复制数组的一部分的实用方法。

如果你检查 api,它的所有方法都是静态的。而且您只是在访问它的公共字段out...检查这个问题以获取有关何时实例化 out 的更多信息

于 2013-06-20T21:18:30.747 回答
1

该类不是静态的,但其中的字段和方法是静态的您仍然可以通过这种方式调用静态方法。

于 2013-06-20T21:18:39.150 回答
1

因为out是 class 上的公共静态字段System。可以使用Type.member语法访问静态成员。

在您的示例中,您正在调用上println()定义的实例方法PrintStream。调用目标是PrintStream存储在静态字段中的实例System.out

于 2013-06-20T21:19:29.060 回答
0

System是一个顶级的类。由于out是静态的(不是 `System 本身),我们使用您描述的语法。

访问静态类成员的语法是

<类名>.<成员名>

请注意这与访问非静态方法或字段有何不同:

<对象名称>.<成员名称>

请注意,语法是由类成员的静态性决定的,而不是类本身的静态性。在您的示例中, 的静态性System无关紧要;的静态out是最重要的。

于 2013-06-20T21:19:51.013 回答