在java中打印null

Gau*_*ain 7 java printing null

执行以下行时:

    System.out.println(null);
Run Code Online (Sandbox Code Playgroud)

结果在控制台上打印为.

为什么会这样?

kay*_*kay 19

从OpenJDK 1.6.0_22的来源讲述:

PrintStream的:

public void println(Object x) {
    String s = String.valueOf(x);
    synchronized (this) {
        print(s);
        newLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

串:

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
Run Code Online (Sandbox Code Playgroud)


sed*_*deh 8

实际上,至少在java版本1.8.0中,System.out.println(null);不应该打印null.你会得到一个错误,例如:

对println的引用是不明确的,PrintStream中的方法println(char [])和PrintStream中的方法println(String)都匹配.在此输入图像描述

您必须按如下方式进行转换:System.out.println((String)null);请参阅此处的 coderanch帖子.我想你也可以做到这一点System.out.println(null+"");.


Bri*_*ach 6

因为这正是Javadocs所说的会发生什么?

http://download.oracle.com/javase/6/docs/api/java/io/PrintStream.html#print(java.lang.String)

打印一个字符串.如果参数为null,则打印字符串"null".