Java 中 == 与 equals() 的区别
1. 一句话总结
==:基本类型比数值;引用类型比地址(判断是否指向堆中同一个对象)。equals():是一个方法。默认实现(Object类)也是比地址;但String、包装类等通过重写实现了内容/逻辑相等的比较。
核心金句:
==判断'是不是同一个';equals()判断'长得像不像'(取决于是否重写)。
2. 核心区别对比表
| 特性 | == | equals() |
|---|---|---|
| 本质 | Java 运算符 | Object 类的方法 |
| 比较内容 | 基本类型比数值,引用类型比内存地址 | 默认比地址,重写后比对象内容 |
| 可定制性 | 不可重写,行为固定 | 可以重写,自定义逻辑相等规则 |
| 适用范围 | 任何基本类型或对象引用 | 仅限对象(不能用于基本类型) |
| null 处理 | null == null 为 true | null.equals(...) 会抛 NPE |
3. == 的用法
3.1 基本类型比较(比较值)
int a = 10;
int b = 10;
System.out.println(a == b); // true
char c1 = 'A';
char c2 = 'B';
System.out.println(c1 == c2);

