温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java String 为何用equals

发布时间:2026-09-15 05:15:15 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

在 Java 里,String 要用 equals() 而不是 ==,核心原因是:

1. == 比较的是“引用(内存地址)”

String a = new String("abc");
String b = new String("abc");

System.out.println(a == b); // false

虽然 a 和 b 内容一样,但它们是两个不同的对象,== 比较的是“是不是同一个对象”。


2. equals() 比较的是“内容”

System.out.println(a.equals(b)); // true

String 类重写了 Object.equals(),用来比较字符串的字符内容是否相同。


3. 为什么容易混淆?

有时候这样写会返回 true:

String a = "abc";
String b = "abc";
System.out.println(a == b); // true

原因是 字符串常量池(String Pool):

  • 使用字面量 "abc" 时,JVM 会复用同一个对象
  • 所以 a 和 b 指向同一个地址

但这是优化行为,不是规则,不能依赖。


4. 正确做法(最佳实践)

✅ 比较字符串内容:

if (a.equals(b)) { ... }

✅ 防止空指针(推荐):

if ("abc".equals(a)) { ... }

一句话总结

== 看“是不是同一个对象”,equals() 看“内容是否一样”
比较 String 内容,永远用 equals()

如果你愿意,我也可以讲 String 常量池 / intern() / 为什么 String 不可变。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手