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

Java中用==比较用户输入String与字面量总返回false的原因是什么

问题原因

Java 中 == 运算符的作用是判断两个对象的内存地址是否一致,并不会比对字符串的实际内容:

  • 你代码里的 s1 = "uni" 是直接声明的字符串字面量,会被存储在JVM的字符串常量池中,复用相同地址的对象。
  • 用 sc.next() 获取到的用户输入字符串 s2 是运行时新生成的String对象,存储在堆内存中,和常量池里的s1内存地址完全不同,所以==判断结果永远为false。

解决方法

比对字符串内容请使用String类提供的equals()方法,把你的判断逻辑修改为如下即可:

if(s1.equals(s2)){
    System.out.println("Same");
}else{
    System.out.println("different");
}

如果需要忽略大小写比对,可以使用equalsIgnoreCase()方法替代equals()。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:42:03