Java面试必问:==和equals()傻傻分不清?3分钟搞懂!

0 阅读1分钟

👋 嗨小伙伴们!今天来聊聊Java面试中超级高频的一道题——== 和 equals() 的区别!

这道题几乎是Java面试官的必问题,很多同学都在这栽过跟头😭 别慌,看完这篇你就彻底明白了!

✨ 核心区别 ✨

1️⃣ == 运算符

  • 基本类型:比较值是否相等
  • 引用类型:比较内存地址是否相同
  • 简单说:看的是"是不是同一个对象"

2️⃣ equals() 方法

  • 默认实现:和 == 一样,比较地址
  • 重写后:比较对象内容是否相等
  • 简单说:看的是"内容是不是一样"

代码示例 💻

// 基本类型比较
int a = 5;
int b = 5;
System.out.println(a == b);  // true ✅
 
// 引用类型比较
String s1 = new String("hello");
String s2 = new String("hello");
System.out.println(s1 == s2);        // false ❌ (地址不同)
System.out.println(s1.equals(s2));   // true ✅ (内容相同)
 
// 字符串常量池优化
String s3 = "world";
String s4 = "world";
System.out.println(s3 == s4);        // true ✅ (常量池优化)

🎯 记忆口诀

== 看地址,equals 看内容
基本类型直接用,引用类型要重写

💡 面试小贴士
面试官可能会追问String类的equals()是怎么重写的,记得去看看源码哦~

觉得有用就收藏备用吧!
评论区聊聊你在面试中遇到的坑~💬