Java基本数据类型比较大小直接用关系运算符,整型间自动数值提升;浮点数需防精度误差和NaN;char按Unicode值比较,boolean仅支持==/!=;包装类应优先用equals()或Long.compare()等静态方法。

Java 基本数据类型比较大小直接用关系运算符,比如 ==、!=、<、>、<=、>=,因为它们存储的是实际数值,不是地址,所以比的就是值本身。
整型之间直接比,无需转换
int、long、short、byte 这些整数类型之间可以混合使用关系运算符比较。Java 会自动进行**数值提升(widening conversion)**,比如 int 和 long 比较时,int 会被隐式转为 long,再比大小。
-
int a = 100;与long b = 200L;可直接写a < b,结果为true - 注意:long 字面量必须加
L或l,否则编译器按 int 处理,可能溢出
浮点类型比较要小心精度问题
float 和 double 是 IEEE 754 浮点数,存在精度丢失,== 判断相等容易出错。
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 判断“是否相等”建议用
Math.abs(a - b) < epsilon(epsilon 是极小阈值,如1e-6) - 判断大小关系(
<、>等)一般没问题,但要注意 NaN:任何含 NaN 的比较都返回false(包括NaN == NaN) - 可用
Float.compare(a, b)或Double.compare(a, b)安全比较,它们把 NaN 当作最大值处理
char 和 boolean 有特殊规则
char 比较的是 Unicode 编码值,可当成整数看待;boolean 只能用 == 或 !=,不能用 < 等比较运算符。
立即学习“Java免费学习笔记(深入)”;
-
'a' < 'z'→true(因为 97 < 122) -
true == false→false;true > false→ 编译错误
包装类要区分 == 和 equals
Integer、Long、Double 等包装类型是引用类型,== 比的是对象引用,不是数值。
- 小范围整数(-128 到 127)的 Integer 对象可能被缓存,
Integer a = 100; Integer b = 100;时a == b可能为true,但不可依赖 - 安全做法:用
.equals()比值,或先用.longValue()/.intValue()转回基本类型再比 - 推荐静态方法:
Long.compare(x, y)返回正数/负数/0,适合排序逻辑

















