Java 中用不建议用等于 = 号判断字符串相等

同事写的代码

Java 中用不建议用等于 = 号判断字符串相等
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!

手机扫描二维码访问

本文标题:《Java 中用不建议用等于 = 号判断字符串相等》作者:极四维博客
原文链接:https://cway.top/post/585.html
特别注明外均为原创,转载请注明。

分享到微信

扫描二维码

可在微信查看或分享至朋友圈。

相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年10月    »
123456
78910111213
14151617181920
21222324252627
28293031

搜索

控制面板

您好,欢迎到访网站!
  查看权限

最新留言

文章归档

  • 订阅本站的 RSS 2.0 新闻聚合