同事写的代码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!