Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 空和“空”之间有什么区别;空";of String.valueOf(字符串对象)_Java_String_Object_If Statement_Null - Fatal编程技术网

Java 空和“空”之间有什么区别;空";of String.valueOf(字符串对象)

Java 空和“空”之间有什么区别;空";of String.valueOf(字符串对象),java,string,object,if-statement,null,Java,String,Object,If Statement,Null,在我的项目中,我必须在某个地方使用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"); } 然后输出是“在其他地

在我的项目中,我必须在某个地方使用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");
    }

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

这是
字符串的源代码。value of
:-

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
如您所见,对于
null
值,它返回
“null”
字符串

所以

值指定为
字符串

同样,如果您这样做:-

System.out.println(null + "Rohit");
您将获得:-

"nullRohit"

编辑

另一个例子:

Integer nulInteger = null;
String valueOf = String.valueOf(nulInteger) // "null"
但在这种情况下

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

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

在JDK 1.5中,其代码如下:

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

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

谢谢,但当我们比较null和“null”时,为什么两者不相等。@arvin_codeHunk,
null
是一个空对象,而
则为“null”
是一个包含字符“n”、“u”、“l”和“l”的实际字符串。此处的字符串写为null,告诉您您刚刚获取了null的字符串值,该值等于
“null”
。所以一个
null
将不等于
“null”
文字。@rohit jain ok,但是“正如您所看到的,对于一个null值,它从上面的答案返回“null”字符串,如果这个null返回“null”字符串,那么这个null和“null”当然应该是相等的,如果我是,请纠正我。”wrong@arvin_codeHunk.. 实际上是在为你寻找一个有价值的来源。嗯,
null
的转换“null”
字符串并不总是发生,只是在某些预定义的情况下才会发生。与字符串串联的情况类似,如中所定义。但是,它不是为字符串比较定义的。空引用不同于“空”字符串。调试器会有帮助吗?netbeans没有用于java字符串操作的调试器
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}