String.valueOf(map.get("key"))的返回值为“null”字符串?今天认真的学习一下。
1、看了一下String的valueOf()的方法,
String valueOf(Object obj)
String valueOf(char data[])
String valueOf(boolean b)
String valueOf(char c)
2、null不是基本的数据类型,所以可供选择的方法只有valueOf(char data[])和 valueOf(Object obj)。
3、 public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
显然会直接返回“null”
public static String valueOf(char data[]) {
return new String(data);
}
再看对应的String构造方法:
public String(char value[]) {
this.offset = 0;
this.count = value.length; ①
this.value = StringValue.from(value);
}
运行到①的时候,会报空指针异常!
4、当后台的map取出的是key引用可能是null的时候,我们最好先判断一下,不转的话你得到的是一个“null”字符串,不是你要的null;
5、"null".equals(String.valuesOf(map.get("key")))?null:String.valuesOf(map.get("key"))