The main difference is that System.out
is a PrintStream
and the other one is a PrintWriter
. Essentially, PrintStream
should be used to write a stream of bytes, while PrintWriter
should be used to write a stream of characters (and thus it deals with character encodings and such).
For most use cases, there is no difference.