👋 嗨小伙伴们!今天来聊聊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()是怎么重写的,记得去看看源码哦~
觉得有用就收藏备用吧!
评论区聊聊你在面试中遇到的坑~💬