Java中用不建议用等于=号判断字符串相等
😂 这篇文章最后更新于1545天前,您需要注意相关的内容是否还可用。
同事写的代码
dealParam(queryCondition.get("creatDate"))!=""
我用debug模式看左边运算结果是"",按理说这个条件判断应该为false,但结果却是true。但很迷的是,虽然条件成立,但条件内代码在本地环境下却没执行(jdk8),而在测试机器上却执行了。后用equals解决这个问题,至于问题原因可以一起探究下。
该queryCondition为SpringMVC接收的Map<String,Object>数据,前端传了个&creatDate=的空参数,如果后台接收到是""的话那下列输出肯定为false
场景还原:
public static void main(String[] args) { Map<Object, Object> queryCondition = new HashMap<>(); queryCondition.put("creatDate",new String()); System.out.println(dealParam(queryCondition.get("creatDate"))!=""); } private static String dealParam(Object obj) { String str = ""; if (obj == null) { return str; } try { str = obj.toString(); } catch (Exception e) { e.printStackTrace(); } return str; }
但实际后台输出为true,如此反推,那creatDate对于前台传的空参,接收的并不是一个字符串了,而是一个对象,因此返回为true!
留言评论
暂无留言