项目中有这样一处写法:
Map<String,Object> paramMap = paramValidate(requestParams);
Object name = paramMap.get("tableName");
//要记录的用法
String tableName = paramMap.get("tableName")== null ? "": paramMap.get("tableName").toString();
自己后来再写代码的时候也遇见了这种情况,所以仔细分析一下
String abc = "";
if ("".equals(abc)){
System.out.println("可以用\"\".equals(abc)");
}
String cba = "";
if (cba == null){
System.out.println("可以用==");
}
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("name","");
if (map.get("name") == null){
System.out.println("这样get到的空值可以用 == null 判断");
}else if ("".equals(map.get("name"))){
System.out.println("这种空值只能用\"\".equals判断");
}
String sql = requestMap.get("sqlTemplate")== null ? "": requestMap.get("sqlTemplate").toString();
//这种写法可以避免返回空值报错,避免进入catch
那么这两个到底有什么区别呢?
string str = “”
str已实例化,且值为0个长度的字符串
sting str=null;
没有实例化,不分配内存空间