Recipe 10.2 Writing Standard Output


Problem

You want your program to write to the standard output.

Solution

Use System.out.

Discussion

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:[1]

[1] All the examples in this recipe are found in one file, PrintStandardOutput.java.

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).



Java Cookbook
Java Cookbook, Second Edition
ISBN: 0596007019
EAN: 2147483647
Year: 2003
Pages: 409
Authors: Ian F Darwin

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net