Java: Print null

What happens if you try to print a null pointer in Java? It depends.

The following line will not compile:

System.out.println(null);

This is the message from my compiler:

reference to println is ambiguous, both
method println(char[]) in java.io.PrintStream and
method println(java.lang.String) in java.io.PrintStream match

In fact, println(java.lang.Object) in java.io.PrintStream is yet another match, but Java has a way of chosing between that one and each of the two methods above. It’s just the string and the character array parameters that cause ambiguity; character arrays and objects can happily coexist.

The following lines will compile:

Object o = null;
String s = null;
System.out.println(o);
System.out.println(s);

Here is the output:

null
null

The following will also compile:

char[] a = null;
System.out.println(a);

But this actually throws an exception in runtime:

Exception in thread "main" java.lang.NullPointerException
        at java.io.Writer.write(Writer.java:127)
        at java.io.PrintStream.write(PrintStream.java:470)
        at java.io.PrintStream.print(PrintStream.java:620)
        at java.io.PrintStream.println(PrintStream.java:759)
        ...

Comments

Be the first to comment!