在我的项目中,我必须使用其他条件来检查空变量
String stringValue = null;
String valueOf = String.valueOf(stringValue);
但当我检查条件如
if (valueOf == null) {
System.out.println("in if");
} else {
System.out.println("in else");
}
然后输出“in else”,为什么会发生这种情况?
答案 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。