温馨提示×

温馨提示×

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

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

java String 为何要用equals

发布时间:2026-10-05 21:45:20 来源:亿速云 阅读:98 作者:小樊 栏目:编程语言

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

== 比较的是“引用(内存地址)”,而 equals() 比较的是“字符串内容”。


1️⃣ == 在 String 中做了什么?

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

System.out.println(a == b); // false
  • a 和 b 是 两个不同的对象
  • == 比较的是:它们是不是同一个对象(内存地址是否相同)
  • 所以结果是 false

2️⃣ equals() 在 String 中做了什么?

System.out.println(a.equals(b)); // true
  • String 重写了 Object.equals()
  • 比较的是:字符内容是否一致
  • "abc".equals("abc") → true

3️⃣ 为什么有时 == 看起来“能用”?

Java 有 字符串常量池(String Pool)

String a = "abc";
String b = "abc";

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

原因:

  • "abc" 在编译期进入常量池
  • a 和 b 指向 同一个常量池对象

⚠️ 但这是特殊情况,不能依赖


4️⃣ new String() 和字面量的区别

String a = "abc";           // 常量池
String b = new String("abc"); // 堆中新建对象
  • a == b → false
  • a.equals(b) → true

5️⃣ 使用建议(很重要)

✅ 比较字符串内容,永远用 equals()

if (str.equals("hello")) { }

✅ 避免空指针,推荐写法

if ("hello".equals(str)) { }

❌ 不要用:

if (str == "hello") { } // 错误用法

6️⃣ 总结一句话

String 用 == 比的是“是不是同一个对象”,
用 equals() 比的是“内容是否一样”。

如果你愿意,我也可以讲:

  • intern() 的作用
  • equals() 和 hashCode() 的关系
  • 面试常问的 String 对比题
向AI问一下细节

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

AI
助
手