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
    特别注明外均为原创,转载请注明。

    分享到微信

    扫描二维码

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

    相关文章

    发表评论:

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

    «    2025年5月    »
    1234
    567891011
    12131415161718
    19202122232425
    262728293031

    搜索

    控制面板

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

    最新留言

    文章归档

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