## [CheatSheet](CheatSheet.md)
| | | | |
|---|---|---|---|
|**目的 (Purpose)**|**Python (bool)**|**Java (boolean / Boolean)**|**备注 (Remarks)**|
|类型名称 (Type Name)|`bool`|`boolean` (原始类型), `Boolean` (包装类)|Java 区分原始类型和包装类。Python `bool` 是 `int` 的子类 (`True` 为 1, `False` 为 0)。|
|字面量 (Literal Values)|`True`, `False` (首字母大写)|`true`, `false` (全小写)|**大小写必须准确**。|
|逻辑非 (Logical NOT)|`not x`|`!x`|Python 用关键字 `not`;Java 用符号 `!`。|
|逻辑与 (Logical AND)|`x and y`|`x && y`|Python 用关键字 `and`;Java 用符号 `&&`。两者都支持短路求值。|
|逻辑或 (Logical OR)|`x or y`|`x|y`|
|短路求值 (Short-circuit)|`and`, `or` 支持|`&&`, `|`支持 (`&`,`|
|隐式布尔转换 (真值/假值 Truthy/Falsy)|**支持** (多种类型可被隐式评估为 `True` 或 `False`)|**不支持** (条件语句必须接收明确的 `boolean` 值)|**核心区别**:Python 中 `0`, `None`, 空集合/序列等为 Falsy,其他通常为 Truthy。Java 的 `if`, `while` 等必须使用 `boolean` 表达式的结果。|
|比较运算符 (产生布尔值)|`==`, `!=`, `<`, `>`, `<=`, `>=` (`is`, `is not`)|`==`, `!=`, `<`, `>`, `<=`, `>=` (对象比较用 `.equals()`)|基础运算符类似。Python `is` 比较对象身份;Java `==` 对原始类型比较值,对对象比较引用。Java 对象内容比较通常用 `.equals()`。|
|显式转为布尔值|`bool(x)`|_(不直接适用, 需用条件)_|Python `bool()` 根据真值/假值规则转换。Java 无此直接对应,需写产生布尔值的表达式,如 `x!= 0`, `obj!= null`, `!list.isEmpty()` 等。|
1. 使用描述性的变量名:将复杂的布尔表达式赋值给有意义的变量名
2. 避免双重否定:像 `!isNotRefBedType` 这样的表达式可能会造成困惑,尽量使用肯定形式。

3. 提取方法:将复杂的判断逻辑封装到单独的方法中,给方法一个清晰的名字:
```java
private boolean shouldIgnoreBedTypeForHomogenization(RoomPrice roomPrice) {
// 实现逻辑
}
```