Following is the code from java.lang.System class (JDK version 1.6)
public final static PrintStream out = nullPrintStream(); //out is set to \'null\' priva
System.in, out, and err are managed by the JVM from native code. This whole magic with nullPrintStream() was there to keep javac from inlining these fields. Since java 7 it looks like
public final static PrintStream out = null;