在java中打印null

时间:2011-09-07 05:03:35

标签: java printing null

执行以下行:

    System.out.println(null);

结果是在控制台上打印 null

为什么会这样?

5 个答案:

答案 0 :(得分:18)

从OpenJDK 1.6.0_22的来源讲述:

PrintStream的:

public void println(Object x) {
    String s = String.valueOf(x);
    synchronized (this) {
        print(s);
        newLine();
    }
}

字符串:

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

答案 1 :(得分:7)

实际上,至少在java版本1.8.0中,System.out.println(null);不应该打印null。您会收到类似以下内容的错误:

对println的引用不明确,PrintStream中的方法println(char [])和PrintStream中的方法println(String)匹配enter image description here

您必须按如下方式进行转换:System.out.println((String)null);请参阅coderanch post here。 我想你也可以做System.out.println(null+"");来完成同样的工作。

答案 2 :(得分:6)

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

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

  

打印一个字符串。如果参数为null,则打印字符串“null”。

答案 3 :(得分:4)

它最终调用String.valueOf(Object)看起来像:

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

答案 4 :(得分:2)

当我查看PrintStream的javadoc时,我观察到了(我在这里引用)

  

打印

     

public void print(String s)

     

打印一个字符串。如果参数为null,则字符串“null”为   打印。否则,字符串的字符将转换为字节   根据平台的默认字符编码,以及这些   字节的写入方式与write(int)方法完全相同。   参数:s - 要打印的字符串

希望这应该回答你的问题..