You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中拆分字符串得到的数组元素为何无法用==判断相等?

Java字符串相等判断的坑:为啥split后的"6"不能用==比较?

Java里用==比较字符串时,和JavaScript的逻辑完全不一样:

  • ==在Java中对引用类型(比如String)比较的是对象的内存地址,不是字符串内容。
  • 直接写的字符串字面量(比如"6")会被存入字符串常量池,所以两个相同的字面量用==比较时,指向的是同一个地址,结果为true。
  • 但split()方法生成的字符串是在堆上新建的对象,不会放入常量池,哪怕内容和字面量一样,内存地址也不同,所以==判断会返回false。

解决方法

直接用equals()方法比较字符串内容,这才是Java中判断字符串相等的正确方式:

String sixString = "6 6 6";
String[] contains6 = sixString.split(" ");
// 比较数组中两个元素的内容
boolean isSix = contains6[0].equals(contains6[1]); // 结果为true
// 用字面量调用equals避免空指针风险
boolean isSixString = "6".equals(contains6[0]); // 结果为true

如果担心contains6[i]可能为null,推荐用字面量来调用equals(),这样即使数组元素是空的,也不会抛出空指针异常。

内容的提问来源于stack exchange,提问作者Andy Simmons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 13:17:34