Java 对象比较详解
基本元素比较
Java 中基本元素(基本数据类型 + 对应的包装类 + 常用引用类型如 String)的比较规则,可以总结为以下核心要点:
1. 基本数据类型:直接用 == 比较值
Java 的 8 种基本数据类型(byte、short、int、long、float、double、char、boolean),只能用 == 比较值是否相等,不存在 equals() 方法。
int a = 10;
int b = 10;
System.out.println(a == b); // true,值相等
- 注意:不同基本类型比较时会发生自动类型提升,比如
int和long比较,int会提升为long后再比。
2. 包装类:分两种情况
包装类(Integer、Long、Boolean 等)是引用类型,但有常量池缓存机制,比较规则需区分场景:
| 比较方式 | 适用场景 | 规则说明 |
|---|---|---|
== | 缓存范围内的包装类对象 | 对于 Integer(-128 ~ 127)、Boolean(true/false)等,缓存池内的对象用 == 会返回 true |
== | 缓存范围外的包装类对象 | 会创建新对象,== 比较的是地址,返回 false |
equals() | 所有包装类对象 | 比较的是底层基本类型的值,推荐使用 |
示例:
Integer i1 = 127;
Integer i2 = ;
System.out.println(i1 == i2);
System.out.println(i1.equals(i2));
;
;
System.out.println(i3 == i4);
System.out.println(i3.equals(i4));


