You want your program to write to the standard output.
In certain circumstances (such as a server program with no connection back to the user's terminal), System.out can become a very important debugging tool (assuming that you can find out what file the server program has redirected standard output into; see Recipe 10.9).
System.out is a PrintStream, so in every introductory text you see a program containing this line, or one like it:
System.out.println("Hello World of Java");
The println method is polymorphic; it has several forms for Object (which obviously calls the given object's toString( ) method), for String, and for each of the primitive types (int , float, boolean, etc.). Each takes only one argument, so it is common to use string concatenation:
System.out.println("The answer is " + myAnswer + " at this time.");
Remember that string concatenation is also polymorphic: you can "add" anything at all to a string, and the result is a string.
Up to here I have been using a Stream, System.out. What if you want to use a Writer? The PrintWriter class has all the same methods as PrintStream and a constructor that takes a Stream, so you can just say:
PrintWriter pw = new PrintWriter(System.out); pw.println("The answer is " + myAnswer + " at this time.");
One caveat with this string concatenation is that if you are appending a bunch of things, and a number and a character come together at the front, they are added before concatenation due to the precedence rules. So don't do this:
System.out.println(i + '=' + " the answer.");
Assuming that i is an integer, then i + '=' (i added to the equals sign) is a valid numeric expression, which will result in a single value of type int. If the variable i has the value 42, and the character = in a Unicode (or ASCII) code chart has the value 61, this prints:
103 the answer.
The wrong value and no equals sign! Safer methods include using parentheses, using double quotes around the equals sign, and using a StringBuffer (see Recipe 3.3) or a MessageFormat (see Recipe 15.10).