String.valueOf(String Object)的null和"null"有什么区别

arv*_*unk 8 java string null if-statement object

在我的项目中,如果其他条件检查空变量,我必须使用

String stringValue = null;
String valueOf = String.valueOf(stringValue);
Run Code Online (Sandbox Code Playgroud)

但是当我检查条件时

  if (valueOf == null) {
        System.out.println("in if");
    } else {
        System.out.println("in else");
    }
Run Code Online (Sandbox Code Playgroud)

然后输出是"在其他地方",为什么会发生这种情况?

Roh*_*ain 14

这里的源代码String.valueOf: -

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

如您所见,对于null值,它返回"null"字符串.

所以,

String stringValue = null;
String valueOf = String.valueOf(stringValue);
Run Code Online (Sandbox Code Playgroud)

"null"字符串valueOf.

同样,如果你这样做: -

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

你会得到: -

"nullRohit"
Run Code Online (Sandbox Code Playgroud)

编辑

另一个例子:

Integer nulInteger = null;
String valueOf = String.valueOf(nulInteger) // "null"
Run Code Online (Sandbox Code Playgroud)

但在这种情况下.

Integer integer = 10;
String valueOf = String.valueOf(integer) // "10"
Run Code Online (Sandbox Code Playgroud)

  • @arvin_codeHunk,`null`是一个空对象,而`"null"`是一个包含字符'n','u','l'和'l'的实际字符串. (5认同)