千家信息网

java字符串比较到底应该用==还是equals

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"java字符串比较到底应该用==还是equals",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java字符串比较到底应该用==还是
千家信息网最后更新 2026年10月31日java字符串比较到底应该用==还是equals

这篇文章主要讲解了"java字符串比较到底应该用==还是equals",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"java字符串比较到底应该用==还是equals"吧!

当用new String("aaaa")对字符串做定义时,==会返回false,equals可以返回正常结果。

比如

 System.out.println("a" == "a"); //true System.out.println("a".equals("a")); //true System.out.println("a".equals(new String("a"))); //true System.out.println("a" == new String("a")); //false System.out.println(new String("a") == new String("a")); //false System.out.println(new String("a").equals(new String("a"))); //true

以上是网上几乎全部文章所提到过的,也是它们仅仅提到的。但是,在实际项目中,并没有什么参考价值。

我从来没见有人用new String的方式定义过字符串,但是当它们在使用==做判断后,依然可能返回错误的结果。

原因就在于,你不用new String,也有人替你用。

在一般的开发中,字符串总是伴随着String类的方法使用的,这些方法中大量使用了new String。一旦使用了这些方法,==就会产生各种各样的bug。

 System.out.println("a".concat("a") == "aa"); //false System.out.println("aa".replaceAll("a", "b") == "bb"); //false System.out.println("A".toLowerCase() == "a"); //false System.out.println("1;2".split(";")[0] == "1"); //false

更要命的是,这些方法在特定情况下也是能够返回true的,具体原因可以通过阅读源码获知。

 System.out.println("a".concat("") == "a"); //ture //replaceAll由于用到了StringBuffer的toString方法,会一直返回false System.out.println("a".toLowerCase() == "a"); //ture System.out.println("1;2".split("3")[0] == "1;2"); //ture

这会导致一些问题:

  1. 测试时没bug,上线后突然出现一堆bug。

  2. 模块一直处于有时正确有时错误的状态。

  3. 做扩展的时候,在上层添加了一些String类的方法,导致下层出现了问题。

  4. …等等

无论哪种,都是很令人郁闷的bug。

你以为==很简单?等出了bug后你就不会这么想了!

当用equals时,需要注意的是调用者不可为空,否则会报空指针异常。一般可以通过常量调用equals的方式避免。若两边都是未知量,那就只能先判断一下是否为空了。虽然麻烦点,但总比出bug要好。

 String str1 = "a"; String str2 = "a"; System.out.println("a".equals(str1)); //正确,不会出现空指针 System.out.println(str1.equals("a")); //不建议,若str1为空,会报空指针 System.out.println(((str1 != null) && str1.equals(str2)) || (str1 == null && str2 == null));//正确,但是建议拆成两句写。你难道不觉得这么多逻辑判断很头疼么?

结论

就当==不存在,无脑使用equals。

感谢各位的阅读,以上就是"java字符串比较到底应该用==还是equals"的内容了,经过本文的学习后,相信大家对java字符串比较到底应该用==还是equals这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

字符 字符串 方法 还是 指针 问题 学习 内容 原因 可以通过 建议 情况 文章 方式 结果 错误 会报 头疼 郁闷 上层 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 科技互联网项目 互联网科技社 合肥互联网科技公司 互联网 科技创业 广州互联网络科技有限公司 互联网科技网站 互联网科技创新企业排名 科技大学互联网专业好不好 青海省互联网新科技 新华互联网科技2019 阿里巴巴算科技企业还是互联网 花神(南京)互联网科技有限公司 注册互联网科技公司经营范围大全 内蒙古九一互联网科技 广州有谷有贝互联网科技有限公司 保山互联网科技靠谱吗 平安好医生打造互联网科技医疗 恒生互联网科技趋势 广东猫王互联网科技有限公司电话 科技金融是不是互联网金融 互联网科技战争 互联网 科技创新 奇酷互联网络科技公司 国外互联网科技网站 深圳互联网科技怎么样 智腾互联网科技有限公司 电子科技大学互联网创业大赛 有人说阿里系是互联网科技企业 河南商务圈互联网科技有限公司
0