Java关系运算符有==、!=、>、<、>=、<=,返回boolean值;浮点数相等比较需谨慎,字符按Unicode码值比较,引用类型用equals()而非==,不同类型数值可隐式转换后比较。

Java 中的关系比较靠六种关系运算符完成:==、!=、>、<、>=、<=。它们作用于两个操作数,返回 boolean 类型结果(true 或 false),常用于 if、while 等条件判断中。
浮点数大小比较是安全的,但相等判断要特别小心
用 `>`、`=`、`
例如:
0.1 + 0.2 > 0.3 返回 true(因为实际计算结果是 0.30000000000000004);
Double.NaN 返回 false(所有与 NaN 的关系比较都返回 false)。
但 `==` 判定浮点数“相等”极易出错,原因在于十进制小数(如 0.1)无法在二进制中精确表示。应改用:
立即学习“Java免费学习笔记(深入)”;
- Math.abs(a - b) (设定容差,如 1e-9)
- 或更健壮的 Double.compare(a, b) == 0
整数和字符比较直接可靠
`int`、`long`、`short`、`byte` 和 `char` 都是精确存储的类型,`==`、`!=`、`>` 等全部可放心使用。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
字符比较本质是 Unicode 码值比较:
- 'a' > 'A' → true(97 > 65)
- 100 == 'd' → true('d' 的 Unicode 值是 100)
引用类型不能用 == 比内容,要用 equals()
`==` 对对象只比较内存地址,不是值是否相同:
- new String("abc") == new String("abc") → false
- "abc".equals("abc") → true
注意:null.equals(...) 会抛空指针异常,建议写成 Objects.equals(a, b) 或先判空。
不同类型混合比较需注意隐式转换规则
Java 允许数值类型间自动提升后比较:
- int x = 5; double y = 5.0; x == y → true(x 自动转为 `double`)
- char c = '5'; int i = 53; c == i → true('5' 的 Unicode 是 53)
但布尔值、字符串、自定义对象之间不能用 `==` 直接比较,编译会报错。

















