[英]what is difference between null and “null” of String.valueOf(String Object)
在我的項目中,如果其他條件檢查空變量,我必須使用
String stringValue = null;
String valueOf = String.valueOf(stringValue);
但是當我檢查條件時
if (valueOf == null) {
System.out.println("in if");
} else {
System.out.println("in else");
}
然后輸出是“在其他地方” ,為什么會發生這種情況?
這是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"
實際上,您可以查看方法的實現:valueOf()。 你會知道那時發生了什么。
在JDK 1.5中,其代碼如下:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
從代碼中,您可以看到如果對象為null,它將返回一個非空字符串,其中包含“null”值,這意味着valueOf對象不為null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.