基本数据类型比较大小直接用关系运算符即可,包括byte、short、int、long、float、double、char;boolean除外,不支持<、>等数值比较;包装类需用equals()、compareTo()或静态compare方法,避免==误判。

Java 中基本数据类型比较大小直接用关系运算符就行,比如 ==、!=、<、>、<=、>=。这些运算符作用于 byte、short、int、long、float、double、char 时,比较的都是它们的实际数值,不是地址,所以结果准确又高效。
哪些基本类型能直接用关系运算符比较
所有数值型基本类型都支持:int、long、short、byte、float、double、char。它们存储的是具体值,放在栈中,比较就是纯数学意义上的大小判断。
-
int a = 5; int b = 10;→a 返回 <code>true -
char c1 = 'A'; char c2 = 'Z';→c1 本质是比较 Unicode 值(65 true -
double x = 3.14; float y = 3.1415f;→x == y是合法的,Java 会自动将float提升为double后再比较
注意类型混合比较时的隐式转换规则
不同数值类型之间比较时,Java 按照「小转大」原则自动提升:byte/short/char → int → long → float → double。只要不丢失精度,编译器就允许。
-
int i = 100;和long l = 1000L;→i 合法,<code>i被自动转为long -
int i = 100;和double d = 99.9;→i > d合法,i转为double后比较 - 但
boolean是特例:它不能和任何数值类型比较,也不支持<或>运算符
别把包装类和基本类型混淆
一旦用了 Integer、Long、Double 等包装类,就不能无脑用 == 比大小了——因为 == 比的是对象引用,不是数值。
立即学习“Java免费学习笔记(深入)”;
-
Integer a = 127; Integer b = 127;→a == b可能为true(缓存机制) -
Integer c = 128; Integer d = 128;→c == d很可能为false - 安全做法是:用
.equals()或compareTo(),或者先调用.intValue()/.longValue()转回基本类型再比
需要排序或通用比较时可用静态 compare 方法
对于基本类型的包装类,Java 提供了如 Integer.compare(int x, int y)、Long.compare(long x, long y) 这类静态方法,返回 -1 / 0 / 1,适合用于 Comparator 或数组排序逻辑。
-
int result = Long.compare(10000000000L, 9999999999L);→result为1 - 这类方法内部处理了边界情况,比手写
if (x > y) return 1更简洁可靠


















