【问题标题】:what is difference between null and "null" of String.valueOf(String Object)String.valueOf(String Object) 的 null 和 "null" 有什么区别
【发布时间】:2012-11-14 16:47:37
【问题描述】:

在我的项目中,我必须使用 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",为什么会这样?

【问题讨论】:

标签: java string object if-statement null


【解决方案1】:

这是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"

【讨论】:

  • 谢谢,但是当我们比较 null 和 "null" 时,为什么两者不相等。
  • @arvin_codeHunk,null 是一个空对象,而"null" 是一个包含字符“n”、“u”、“l”和“l”的实际字符串。
  • 这里的String写成null,告诉你你刚刚取的String值为null,等于"null"。所以 null 将不等于 "null" 文字。
  • @rohit jain 好的,但是“如您所见,对于 null 值,它从上面的答案返回“null”字符串”,如果这个 null 返回“null”字符串,那么这个 null 和“ null" 两者应该相等,如果我错了,请纠正我
  • @arvin_codeHunk.. 实际上是在为您寻找有价值的资源。好吧,null"null" 字符串的转换并不总是发生,而是仅在某些预定义的情况下发生。就像String Concatenation 的情况一样 - 如JLS - String Concatenation 中所定义。但是,它没有为String Comparison 定义。
【解决方案2】:

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

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

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

从代码中可以看出,如果对象为null,则返回一个非空字符串,其中包含“null”值,即valueOf对象不为null。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2011-04-16
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多