为什么java.Lang.System可以用作静态类

时间:2013-06-20 21:17:03

标签: java

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

System不是静态类。在文档中,它仅表示Systempublic final

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

4 个答案:

答案 0 :(得分:1)

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

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

如果检查api,它的所有方法都是静态的。您只是访问其公共字段out ...请查看此question以获取有关何时实例化的更多信息

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

System是一个顶级课程。由于out是静态的(不是“系统本身”),我们使用您描述的语法。

访问静态类成员的语法是

  

<类名>。<会员名称>

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

  

< object name>。< member name>

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