← 返回首页

Java运算符详解:算术、关系、逻辑运算符

📂 java ⏱ 4 min 793 words

Java运算符详解:算术、关系、逻辑运算符

概述

运算符是用于对变量和值执行操作的特殊符号。Java提供了多种类型的运算符,每种都有其特定的用途。

1. 算术运算符

算术运算符用于执行基本的数学运算:

运算符 描述 示例
+ 加法 5 + 3 = 8
- 减法 5 - 3 = 2
* 乘法 5 * 3 = 15
/ 除法 5 / 3 = 1
% 取模(余数) 5 % 3 = 2
++ 自增 i++
-- 自减 i--
public class ArithmeticExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        
        System.out.println("a + b = " + (a + b));  // 13
        System.out.println("a - b = " + (a - b));  // 7
        System.out.println("a * b = " + (a * b));  // 30
        System.out.println("a / b = " + (a / b));  // 3
        System.out.println("a % b = " + (a % b));  // 1
        
        // 自增自减
        int c = 5;
        c++;  // c = 6
        System.out.println("c++ = " + c);
        
        c--;  // c = 5
        System.out.println("c-- = " + c);
    }
}

2. 关系运算符

关系运算符用于比较两个值:

运算符 描述 示例
== 等于 5 == 5 → true
!= 不等于 5 != 3 → true
> 大于 5 > 3 → true
< 小于 5 < 3 → false
>= 大于等于 5 >= 5 → true
<= 小于等于 5 <= 3 → false
public class RelationalExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        
        System.out.println("a == b: " + (a == b));  // false
        System.out.println("a != b: " + (a != b));  // true
        System.out.println("a > b: " + (a > b));    // false
        System.out.println("a < b: " + (a < b));    // true
        System.out.println("a >= b: " + (a >= b));  // false
        System.out.println("a <= b: " + (a <= b));  // true
    }
}

3. 逻辑运算符

逻辑运算符用于组合多个条件:

运算符 描述 示例
&& 逻辑与 (true && false) → false
|| 逻辑或 (true || false) → true
! 逻辑非 !true → false
public class LogicalExample {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        
        System.out.println("a && b: " + (a && b));  // false
        System.out.println("a || b: " + (a || b));  // true
        System.out.println("!a: " + (!a));           // false
        System.out.println("!b: " + (!b));           // true
        
        // 复合条件
        int age = 25;
        boolean hasID = true;
        boolean canEnter = (age >= 18) && hasID;
        System.out.println("Can enter: " + canEnter);  // true
    }
}

4. 位运算符

位运算符用于对二进制位进行操作:

运算符 描述 示例
& 按位与 5 & 3 = 1
| 按位或 5 | 3 = 7
^ 按位异或 5 ^ 3 = 6
~ 按位取反 ~5 = -6
<< 左移 5 << 1 = 10
>> 右移 5 >> 1 = 2
public class BitwiseExample {
    public static void main(String[] args) {
        int a = 5;   // 二进制:101
        int b = 3;   // 二进制:011
        
        System.out.println("a & b = " + (a & b));   // 1
        System.out.println("a | b = " + (a | b));   // 7
        System.out.println("a ^ b = " + (a ^ b));   // 6
        System.out.println("~a = " + (~a));          // -6
        System.out.println("a << 1 = " + (a << 1)); // 10
        System.out.println("a >> 1 = " + (a >> 1)); // 2
    }
}

5. 赋值运算符

赋值运算符用于为变量赋值:

运算符 描述 示例
= 赋值 a = 5
+= 加后赋值 a += 5 等价于 a = a + 5
-= 减后赋值 a -= 5 等价于 a = a - 5
*= 乘后赋值 a *= 5 等价于 a = a * 5
/= 除后赋值 a /= 5 等价于 a = a / 5
%= 取模后赋值 a %= 5 等价于 a = a % 5
public class AssignmentExample {
    public static void main(String[] args) {
        int a = 10;
        
        a += 5;  // a = 15
        System.out.println("a += 5: " + a);
        
        a -= 3;  // a = 12
        System.out.println("a -= 3: " + a);
        
        a *= 2;  // a = 24
        System.out.println("a *= 2: " + a);
        
        a /= 4;  // a = 6
        System.out.println("a /= 4: " + a);
        
        a %= 4;  // a = 2
        System.out.println("a %= 4: " + a);
    }
}

6. 条件运算符(三元运算符)

条件运算符是if-else语句的简写形式:

public class TernaryExample {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        
        // 条件运算符
        int max = (a > b) ? a : b;
        System.out.println("最大值: " + max);  // 20
        
        // 等价于
        int max2;
        if (a > b) {
            max2 = a;
        } else {
            max2 = b;
        }
    }
}

运算符优先级

运算符的优先级决定了表达式的计算顺序:

  1. 括号 ()
  2. 一元运算符 ++ -- ! ~
  3. 算术运算符 * / % + -
  4. 移位运算符 << >> >>>
  5. 关系运算符 < > <= >= instanceof
  6. 相等运算符 == !=
  7. 位运算符 & ^ |
  8. 逻辑运算符 && ||
  9. 条件运算符 ? :
  10. 赋值运算符 = += -= *= /= %=
public class PrecedenceExample {
    public static void main(String[] args) {
        int result = 10 + 2 * 3;  // 先乘法后加法
        System.out.println(result);  // 16
        
        int result2 = (10 + 2) * 3;  // 先括号
        System.out.println(result2);  // 36
    }
}

最佳实践

  1. 使用括号明确优先级:避免依赖运算符优先级,使用括号使表达式更清晰
  2. 避免复杂的复合表达式:将复杂表达式拆分为多个简单表达式
  3. 注意整数除法:整数除法会丢弃小数部分
  4. 使用自增自减运算符:在循环和计数器中使用自增自减运算符

总结

掌握Java运算符是编写有效Java程序的基础。每种运算符都有其特定的用途和语法规则。在实际编程中,要根据具体需求选择合适的运算符,并注意运算符的优先级和结合性。