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

时间:2012-11-27 05:25:51

标签: java string object if-statement null

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

String stringValue = null;
String valueOf = String.valueOf(stringValue);

但当我检查条件如

  if (valueOf == null) {
        System.out.println("in if");
    } else {
        System.out.println("in else");
    }

然后输出“in else”,为什么会发生这种情况?

2 个答案:

答案 0 :(得分:14)

以下是String.valueOf源代码: -

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

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

所以,

String stringValue = null;
String valueOf = String.valueOf(stringValue);

"null"字符串提供给valueOf

同样,如果你这样做: -

System.out.println(null + "Rohit");

你会得到: -

"nullRohit"

修改

另一个例子:

Integer nulInteger = null;
String valueOf = String.valueOf(nulInteger) // "null"

但在这种情况下。

Integer integer = 10;
String valueOf = String.valueOf(integer) // "10"

答案 1 :(得分:2)

实际上,您可以查看该方法的实现:valueOf()。你会知道那时发生了什么。

在JDK 1.5中,其代码如下:

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

从代码中,您可以看到如果对象为null,它将返回一个非空字符串,其中包含“null”值,这意味着valueOf对象不为null。