Map集合中key不存在时使用toString()方法、valueOf()方法和强制转换((String))之间的区别
1、toString()方法
底层代码
public String toString() { return this; }
其返回值为String类型的字符串本身
1 Map<String, Object> params = new HashMap<String, Object>(); 2 //Map集合中没有key为1的键值对 3 String result = params.get("1").toString(); 4 if (result == null) { 5 System.out.println("result=" + result); 6 } else { 7 System.out.println("result=字符串:" + result); 8 }
2、valueOf()方法
底层代码
public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }
返回参数的字符串表示形式,即如果入参为空则返回字符串null即"null",如果入参有值则返回则字符串形式的值
1 Map<String, Object> params = new HashMap<String, Object>(); 2 //Map集合中没有key为1的键值对 3 String result = String.valueOf(params.get("1")); 4 if (result == null) { 5 System.out.println("result=" + result); 6 } else { 7 System.out.println("result=字符串:" + result); 8 }
3、(String)强制转换,这种方法并不能强制转换成其他非String类型,但是(String)null这么写合法
1 Map<String, Object> params = new HashMap<String, Object>(); 2 //Map集合中没有key为1的键值对 3 String result = (String)params.get("1"); 4 if (result == null) { 5 System.out.println("result=" + result); 6 } else { 7 System.out.println("result=字符串:" + result); 8 }
总结:从map集合中获取key对应的value时,如果key不存在,使用String.valueOf(Map.get("key")),得到的结果是String类型null即为"null";如果使用Map.get("key").toString(),
得到的结果是空指针异常;使用(String)Map.get("key"),得到的结果是null。