java中打印null

发布于 2024-12-03 07:34:56 字数 133 浏览 1 评论 0原文

执行以下行时:

    System.out.println(null);

结果在控制台上打印为 null

为什么会发生这种情况?

On execution of following line :

    System.out.println(null);

the result comes out to be null printed on console.

Why does that happen?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

っ左 2024-12-10 07:34:56

从 OpenJDK 1.6.0_22 的来源来看:

PrintStream:

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

String:

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

Telling from the sources of OpenJDK 1.6.0_22:

PrintStream:

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

String:

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
十级心震 2024-12-10 07:34:56

实际上,至少在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+""); 来完成同样的任务。

Actually, at least in java version 1.8.0, System.out.println(null); should not print null. You would get an error saying something like:

reference to println is ambiguous, both method println(char[]) in PrintStream and method println(String) in PrintStream match. enter image description here

You would have to cast as follows: System.out.println((String)null); See coderanch post here.
I suppose you could also do System.out.println(null+""); to accomplish same.

如果没有 2024-12-10 07:34:56

因为这正是 Javadocs 所说的将会发生的情况?

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

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

Because that's exactly what the Javadocs say will happen?

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

Prints a string. If the argument is null then the string "null" is printed.

情域 2024-12-10 07:34:56

它最终调用 String.valueOf(Object) ,如下所示:

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

It's eventually calling String.valueOf(Object) which looks like:

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
一瞬间的火花 2024-12-10 07:34:56

当我查看 PrintStream 我观察到(我在这里引用)

打印

公共无效打印(字符串)

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

希望这能回答您的问题。

When I look at the javadoc for PrintStream I observe (I am quoting here)

print

public void print(String s)

Print a string. If the argument is null then the string "null" is
printed. Otherwise, the string's characters are converted into bytes
according to the platform's default character encoding, and these
bytes are written in exactly the manner of the write(int) method.
Parameters: s - The String to be printed

Hopefully that should answer your question..

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文