8

在我的项目中,我必须在某个地方使用 if n else 条件来检查空变量

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

但是当我检查情况时

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

那么输出是“in else”,为什么会这样?

4

2 回答 2

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"
于 2012-11-27T05:29:03.240 回答
2

其实可以看一下方法的实现:valueOf()。你会知道那时发生了什么。

在 JDK 1.5 中,它的代码是这样的:

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

从代码中可以看出,如果对象为null,它将返回一个带有“null”值的非空字符串,这意味着valueOf对象不为null。

于 2012-11-27T05:31:54.633 回答