Skip to content

运算符

算术运算符

java
public class ArithmeticDemo {
    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 i = 10;
        System.out.println("i++ = " + i++);  // 10(后增)
        System.out.println("i = " + i);      // 11
        
        int j = 10;
        System.out.println("++j = " + ++j);  // 11(前增)
        System.out.println("j = " + j);      // 11
    }
}

运算符列表

运算符描述示例
+加法a + b
-减法a - b
*乘法a * b
/除法a / b
%取余a % b
++自增a++++a
--自减a----a

整数除法注意

java
int a = 5;
int b = 2;
System.out.println(a / b);  // 2(整数除法,舍去小数)

// 需要小数结果
System.out.println((double) a / b);  // 2.5
System.out.println(5.0 / 2);         // 2.5

关系运算符

java
public class RelationDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        
        System.out.println(a == b);  // 相等: false
        System.out.println(a != b);  // 不等: true
        System.out.println(a < b);   // 小于: true
        System.out.println(a > b);   // 大于: false
        System.out.println(a <= b);  // 小于等于: true
        System.out.println(a >= b);  // 大于等于: false
    }
}

运算符列表

运算符描述示例
==相等a == b
!=不等a != b
<小于a < b
>大于a > b
<=小于等于a <= b
>=大于等于a >= b

逻辑运算符

java
public class LogicDemo {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;
        
        System.out.println(a && b);  // 与: false
        System.out.println(a || b);  // 或: true
        System.out.println(!a);      // 非: false
        
        // 短路运算
        int x = 10;
        boolean result = (x > 100) && (x++ > 5);
        System.out.println(x);  // 10(x++未执行)
        
        result = (x > 5) || (x++ > 100);
        System.out.println(x);  // 10(x++未执行)
    }
}

运算符列表

运算符描述说明
&&短路与两边都为true才为true,有短路效果
||短路或一边为true即为true,有短路效果
!逻辑非取反
&逻辑与无短路效果
|逻辑或无短路效果

短路运算示例

java
String name = null;
// 短路运算避免空指针
if (name != null && name.length() > 0) {
    System.out.println(name);
}

位运算符

java
public class BitDemo {
    public static void main(String[] args) {
        int a = 60;  // 二进制: 0011 1100
        int b = 13;  // 二进制: 0000 1101
        
        System.out.println("a & b = " + (a & b));   // 按位与: 12
        System.out.println("a | b = " + (a | b));   // 按位或: 61
        System.out.println("a ^ b = " + (a ^ b));   // 按位异或: 49
        System.out.println("~a = " + (~a));         // 按位取反: -61
        System.out.println("a << 2 = " + (a << 2)); // 左移: 240
        System.out.println("a >> 2 = " + (a >> 2)); // 右移: 15
        System.out.println("a >>> 2 = " + (a >>> 2)); // 无符号右移: 15
    }
}

运算符列表

运算符描述示例
&按位与a & b
|按位或a | b
^按位异或a ^ b
~按位取反~a
<<左移a << n
>>右移a >> n
>>>无符号右移a >>> n

实用技巧

java
// 判断奇偶
boolean isOdd = (n & 1) == 1;

// 交换两个数
int a = 10, b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
// a = 20, b = 10

// 快速乘除2
int n = 10;
n = n << 1;  // 乘2: 20
n = n >> 1;  // 除2: 10

赋值运算符

java
public class AssignDemo {
    public static void main(String[] args) {
        int a = 10;
        
        a += 5;   // a = a + 5  -> 15
        a -= 3;   // a = a - 3  -> 12
        a *= 2;   // a = a * 2  -> 24
        a /= 4;   // a = a / 4  -> 6
        a %= 4;   // a = a % 4  -> 2
        
        a &= 3;   // a = a & 3  -> 2
        a |= 1;   // a = a | 1  -> 3
        a ^= 2;   // a = a ^ 2  -> 1
        a <<= 2;  // a = a << 2 -> 4
        a >>= 1;  // a = a >> 1 -> 2
        
        System.out.println(a);
    }
}

运算符列表

运算符描述等价于
=赋值a = b
+=加后赋值a = a + b
-=减后赋值a = a - b
*=乘后赋值a = a * b
/=除后赋值a = a / b
%=取余后赋值a = a % b
&=按位与后赋值a = a & b
|=按位或后赋值a = a | b
^=按位异或后赋值a = a ^ b
<<=左移后赋值a = a << b
>>=右移后赋值a = a >> b

三元运算符

java
public class TernaryDemo {
    public static void main(String[] args) {
        int age = 20;
        
        // 条件 ? 真值 : 假值
        String status = age >= 18 ? "成年" : "未成年";
        System.out.println(status);  // 成年
        
        // 嵌套使用
        int score = 85;
        String grade = score >= 90 ? "优秀" :
                       score >= 80 ? "良好" :
                       score >= 60 ? "及格" : "不及格";
        System.out.println(grade);  // 良好
        
        // 避免空指针
        String name = null;
        String displayName = name != null ? name : "匿名";
        System.out.println(displayName);  // 匿名
    }
}

运算符优先级

从高到低:

优先级运算符
1()[].
2!~++--
3*/%
4+-
5<<>>>>>
6<<=>>=instanceof
7==!=
8&
9^
10|
11&&
12||
13?:
14=+=-=*=/=%=&=|=^=<<=>>=>>>=

建议

使用括号 () 明确优先级,使代码更易读。

java
// 不推荐
boolean result = a > b && c < d || e == f;

// 推荐
boolean result = (a > b && c < d) || (e == f);