Writing Standard Output

Problem

You want your program to write to the standard output.

Solution

Use System.out.

Discussion

Again despite Rusty’s quote, there are circumstances (such as a server program with no connection back to the user’s terminal) in which 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 Section 9.7).

System.out is a PrintStream, so in every introductory text you see a program containing this line, or one like it:[24]

System.out.println("Hello World of Java");

The println method is polymorphic; there are forms of it for Object (which obviously calls the given object’s toString( ) method), for String, and for each of the base 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 togetherat 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, then this will print:

103 the answer.

that is, the wrong value, and no equals sign. Safer methods include using parentheses, using double quotes around the equals sign, and using a StringBuffer (see Section 3.4) or a MessageFormat (see Section 14.11).



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

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.21.104.183