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

判断数组元素的if语句失效,为何无法识别数组末尾的'i'?

问题分析与解决

你的问题出在字符串比较的方式上:Java里不能用==来判断两个字符串的内容是否相同。

为什么会出错?

==运算符在Java中比较的是两个对象的内存地址,而不是字符串的实际内容。你从输入中解析得到的arr[2][2]是一个新创建的字符串对象,和你写的字面量"i"可能不在同一块内存地址上——哪怕内容完全一样,==也会返回false,导致程序走else分支。

正确的写法

把判断条件换成equals()方法,它专门用来比较字符串的内容是否一致:

if (arr[2][2].equals("i")) {
    System.out.println("There is an i");
} else {
    System.out.print("No i found");
}

如果担心数组元素可能为null(比如输入解析出错),可以把字面量放前面,避免空指针异常:

if ("i".equals(arr[2][2])) {
    System.out.println("There is an i");
} else {
    System.out.print("No i found");
}

补充说明

Java里的字符串字面量(比如"i")会被存在字符串常量池里,但通过输入流、new String()等方式创建的字符串是在堆内存里生成的新对象,两者内存地址不同,所以==不生效,而equals()会忽略地址差异,只对比内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:09:14