System类并不是面向对象的,它里面只有静态字段和静态方法,而且不能够被实例化,因为它的无参数构造函数被声明为private,里面都是静态的东西,实例化也没意义。out静态字段是PrintStream的一个引用。 你说的 public final static PrintStream out = null; 而没有 new PrintString(); 可以是System类中的本地方法在作怪, 可能要经过JVM初始化为有意义的值。
这个方面超过了我的能力范围啊。作者: 佘天宇 时间: 2012-10-4 22:32
System类是不能被实例化的,没有提供构造函数。out对应的是打印流对象PrintStream,这打印流当中提供了很多的Print()方法,以重载的形式存在。
作者: 夏天 时间: 2012-10-4 22:40
目测2楼正解。作者: Whereismymind 时间: 2018-3-13 14:02
楼主这么多年了还在这论坛么,这个问题有答案了么,我也跟你有一样的疑问,发现楼上的都没有理解楼主的问题,楼主应该是问System类里的静态变量OUT未初始化,public final static PrintStream out = null;即out并未指向一个printStream类的实例,却可以通过System.out.println()直接调用println()方法。网上找了一些答案,都是通过例子来说明的,类B是静态类A里的一个静态变量,所以可以通过A.B来调用B里面的方法,但是这些例子里面,A里面的成员变量B都有初始化一个对象,public final static B b=new B();