当我们调用时,
System.out.println("aaa");
我们没有实例化 Class 的对象System。
并且System不是静态类。在文档中,它只说System是public final.
所以我的问题是为什么我们可以System用作静态类?
当我们调用时,
System.out.println("aaa");
我们没有实例化 Class 的对象System。
并且System不是静态类。在文档中,它只说System是public final.
所以我的问题是为什么我们可以System用作静态类?
System 类包含几个有用的类字段和方法。它不能被实例化。
System 类提供的设施包括标准输入、标准输出和错误输出流;访问外部定义的属性和环境变量;一种加载文件和库的方法;以及一种用于快速复制数组的一部分的实用方法。
如果你检查 api,它的所有方法都是静态的。而且您只是在访问它的公共字段out...检查这个问题以获取有关何时实例化 out 的更多信息
该类不是静态的,但其中的字段和方法是静态的。您仍然可以通过这种方式调用静态方法。
因为out是 class 上的公共静态字段System。可以使用Type.member语法访问静态成员。
在您的示例中,您正在调用上println()定义的实例方法PrintStream。调用目标是PrintStream存储在静态字段中的实例System.out。
System是一个顶级的类。由于out是静态的(不是 `System 本身),我们使用您描述的语法。
访问静态类成员的语法是
<类名>.<成员名>
请注意这与访问非静态方法或字段有何不同:
<对象名称>.<成员名称>
请注意,语法是由类成员的静态性决定的,而不是类本身的静态性。在您的示例中, 的静态性System无关紧要;的静态out是最重要的。