**Java, Python, Go 运算符比较** 好的,这就将逻辑运算符添加到表格中: | | | | | | ---------------------- | ------------------------------ | ---------------------------- | ----------------------------------------- | | **功能 (Function)** | **Java** | **Python** | **Go** | | | | | | | **比较运算符 (Comparison)** | | | | | 等于 (Equal to) | `==` <br> (对象比较需用 `.equals()`) | `==` <br> (对象身份比较用 `is`) | `==` <br> (结构体比较字段, 指针比较地址, 接口比较类型和值) | | 不等于 (Not equal to) | `!=` | `!=` <br> (对象身份比较用 `is not`) | `!=` | | 大于 (Greater than) | `>` | | | | 小于 (Less than) | `<` | | | | 大于等于 (Greater or eq) | `>=` | | | | 小于等于 (Less or eq) | `<=` | | | | | | | | | **算术运算符 (Arithmetic)** | | | | | 加法 (Addition) | `+` | `+` | `+` | | 减法 (Subtraction) | `-` | `-` | `-` | | 乘法 (Multiplication) | `*` | `*` | `*` | | 除法 (Division) | `/` <br> (整数相除为整数,否则为浮点数) | `/` <br> (结果总是浮点数,"真除法") | `/` <br> (整数相除为整数,否则为浮点数;不同类型需显式转换) | | 取模/取余 (Modulus) | `%` | `%` <br> (结果符号与除数相同) | `%` <br> (仅用于整数) | | 幂/指数 (Exponentiation) | `Math.pow(base, exp)` | `**` | `math.Pow(base, exp)` <br> (需导入 `math` 包) | | 整除/向下取整 (Floor Div) | `/` <br> (当操作数都为整数时) | `//` | `/` <br> (当操作数都为整数时) | | 自增 (Increment) | `++` <br> (前缀/后缀) | 无 (`+= 1`) | `++` <br> (仅作为语句,后缀) | | 自减 (Decrement) | `--` <br> (前缀/后缀) | 无 (`-= 1`) | `--` <br> (仅作为语句,后缀) | | | | | | | **逻辑运算符 (Logical)** | | | | | 逻辑与 (AND) | `&&` (短路) <br> `&` (非短路) | `and` (短路, 返回操作数之一) | `&&` (短路, 必须是 bool 类型) | | 逻辑或 (OR) | ` | `(短路) <br>` | ` (非短路) | | 逻辑非 (NOT) | `!` | `not` | `!` (必须是 bool 类型) | **逻辑运算符补充说明:** - **短路 (Short-circuiting):** 对于 `&&` (Java/Go) 和 `and` (Python),如果左侧表达式为假,则不再评估右侧表达式。对于 `||` (Java/Go) 和 `or` (Python),如果左侧表达式为真,则不再评估右侧表达式。Java 的 `&` 和 `|` 总是评估两侧。 - **Python 的 and/or 返回值:** Python 的 `and` 和 `or` 不一定返回 `True` 或 `False`。它们返回决定了最终结果的那个操作数的值(基于“真值”判断)。 - **Go 的类型严格性:** Go 的逻辑运算符 (`&&`, `||`, `!`) 只能作用于 `bool` 类型的值。 | | | | | | ---------------------- | ------------------------------ | ---------------------------- | ----------------------------------------- | | **功能 (Function)** | **Java** | **Python** | **Go** | | **比较运算符 (Comparison)** | | | | | 等于 (Equal to) | `==` <br> (对象比较需用 `.equals()`) | `==` <br> (对象身份比较用 `is`) | `==` <br> (结构体比较字段, 指针比较地址, 接口比较类型和值) | | 不等于 (Not equal to) | `!=` | `!=` <br> (对象身份比较用 `is not`) | `!=` | | 大于 (Greater than) | `>` | | | | 小于 (Less than) | `<` | | | | 大于等于 (Greater or eq) | `>=` | | | | 小于等于 (Less or eq) | `<=` | | | | | | | | | **算术运算符 (Arithmetic)** | | | | | 加法 (Addition) | `+` | | | | 减法 (Subtraction) | `-` | | | | 乘法 (Multiplication) | `*` | | | | 除法 (Division) | `/` <br> (整数相除为整数,否则为浮点数) | `/` <br> (结果总是浮点数,"真除法") | `/` <br> (整数相除为整数,否则为浮点数;不同类型需显式转换) | | 取模/取余 (Modulus) | `%` | `%` <br> (结果符号与除数相同) | `%` <br> (仅用于整数) | | 幂/指数 (Exponentiation) | `Math.pow(base, exp)` | `**` | `math.Pow(base, exp)` <br> (需导入 `math` 包) | | 整除/向下取整 (Floor Div) | `/` <br> (当操作数都为整数时) | `//` | `/` <br> (当操作数都为整数时) | | 自增 (Increment) | `++` <br> (前缀/后缀) | 无 (`+= 1`) | `++` <br> (仅作为语句,后缀) | | 自减 (Decrement) | `--` <br> (前缀/后缀) | 无 (`-= 1`) | `--` <br> (仅作为语句,后缀) | **补充说明:** - **Java:** - `==` 对于基本类型比较值,对于对象比较引用(内存地址)。比较对象内容是否相等通常使用 `.equals()` 方法。 - 整数除法会截断小数部分。 - **Python:** - `==` 比较值是否相等。`is` 比较两个变量是否引用同一个对象(内存地址)。 - `/` 执行“真除法”,结果总是浮点数。`//` 执行地板除法(向下取整)。 - 没有 `++` 或 `--` 运算符,需要使用 `x += 1` 或 `x -= 1`。 - **Go:** - Go 是强类型语言,不同类型的数值(如 `int` 和 `float64`)不能直接进行算术运算,需要显式类型转换。 - `++` 和 `--` 只能作为独立的语句使用(例如 `i++`),不能作为表达式的一部分(例如 `x = i++` 是非法的)。它们只有后缀形式。 - 没有专门的幂运算符,需要使用 `math` 包中的 `Pow` 函数。 - 取模 `%` 运算符只能用于整数。