当我们System.out.println()
在java中声明要在屏幕上输出一些东西的时候。在这个声明System
中是类,out
是那个类的对象,是那个类println()
的方法。
当我们在类 B 中声明类 A 的实例或对象时,使用A object;
以下语法, object.method(argument)
.
现在我的问题是为什么我们不能在下面的语法中声明out
类的对象 , 。System
System out = new System();
当我们System.out.println()
在java中声明要在屏幕上输出一些东西的时候。在这个声明System
中是类,out
是那个类的对象,是那个类println()
的方法。
当我们在类 B 中声明类 A 的实例或对象时,使用A object;
以下语法, object.method(argument)
.
现在我的问题是为什么我们不能在下面的语法中声明out
类的对象 , 。System
System out = new System();
在此语句中,“System”是类,“out”是该类的对象,
不,out
是. _ System
它是一个返回对 a 的引用的字段PrintStream
。它不是System
. _ 所以你可以使用:
PrintStream stream = System.out;
stream.println("Foo");
(顺便说一句,区分类、对象、字段、引用等很重要。花一些时间来正确理解术语确实可以帮助您正确理解它。)
您误解了 Java 语法的工作原理。在System.out
中,System
是一个类。点运算符意味着它out
是该类的成员(在这种情况下是变量,而不是方法,因为没有括号),而不是它的实例。out
是 type 的对象,PrintStream
实际上您可以创建PrintStream
s 的新实例(例如通过打开文件进行写入)。
System
恰好是一个特殊的 Java 类,您无法自己实例化。对于大多数类,您可以使用您描述的语法: Car myCar = new Car();
out – 属于static member field
System类,属于 PrintStream类型。它的访问说明符是public final
.
这在启动期间被实例化,并与主机的标准输出控制台映射。