当我们System.out.println()在java中声明要在屏幕上输出一些东西的时候。在这个声明System中是类,out是那个类的对象,是那个类println()的方法。
当我们在类 B 中声明类 A 的实例或对象时,使用A object;以下语法, object.method(argument).
现在我的问题是为什么我们不能在下面的语法中声明out类的对象 , 。SystemSystem out = new System();
当我们System.out.println()在java中声明要在屏幕上输出一些东西的时候。在这个声明System中是类,out是那个类的对象,是那个类println()的方法。
当我们在类 B 中声明类 A 的实例或对象时,使用A object;以下语法, object.method(argument).
现在我的问题是为什么我们不能在下面的语法中声明out类的对象 , 。SystemSystem 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实际上您可以创建PrintStreams 的新实例(例如通过打开文件进行写入)。
System恰好是一个特殊的 Java 类,您无法自己实例化。对于大多数类,您可以使用您描述的语法: Car myCar = new Car();
out – 属于static member fieldSystem类,属于 PrintStream类型。它的访问说明符是public final.
这在启动期间被实例化,并与主机的标准输出控制台映射。