天天看點

System.out.println()的詳解

System是System類

1 package java.lang;
2 public final class System {
3       public final static PrintStream out = null;
4 }      

println()是PrintStream 類中的方法。

package java.io;
public class PrintStream extends FilterOutputStream
    implements Appendable, Closeable
{
  
   protected OutputStream out;

   private BufferedWriter textOut;      

    private void ensureOpen() throws IOException {

       if (out == null)

        throw new IOException("Stream closed");

    }

   
public void println() {
        newLine();//換行
    }
    
    public void println(boolean x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }
    
    public void println(String x) {
        synchronized (this) {
            print(x);
            newLine();
        }
    }

    public void print(boolean b) {
        write(b ? "true" : "false");
    }

    public void print(Object obj) {
        write(String.valueOf(obj));
    }

    private void write(String s) {
        try {
            synchronized (this) {
                ensureOpen();
                textOut.write(s);
                textOut.flushBuffer();
                charOut.flushBuffer();
                if (autoFlush && (s.indexOf('\n') >= 0))
                    out.flush();
            }
        }
        catch (InterruptedIOException x) {
            Thread.currentThread().interrupt();
        }
        catch (IOException x) {
            trouble = true;
        }
    }

    private void newLine() {
        try {
            synchronized (this) {
                ensureOpen();
                textOut.newLine();
                textOut.flushBuffer();
                charOut.flushBuffer();
                if (autoFlush)
                    out.flush();
            }
        }
        catch (InterruptedIOException x) {
            Thread.currentThread().interrupt();
        }
        catch (IOException x) {
            trouble = true;
        }
    }
}      

轉載于:https://www.cnblogs.com/stujike/p/9688054.html