Search code examples
javasystem.outprintstream

Confused about the PrintStream out variable


The Java documentation page for the System class says that one of its fields is called "out":

static PrintStream out

If I then look at the doc page for the PrintStream class, it says that one of its inherited fields is called "out". If I then click on this particular "out hyperlink" on that doc page, it provides a bit more detail:

protected OutputStream out

I'm confused about these two variables called "out". Are they two completely seperate variables?


Solution

  • Are they two completely seperate variables?

    Yes, they are. PrintStream is a FilterOutputStream. As such it wraps an OutputStream object so that it can add behavior to it.

    System.out
    

    is referencing a PrintStream object that is wrapping the OutputStream (referenced by its own out field) that represents the standard output.