Java 运算符

运算符是加工数据的符号:把两个数相加、比较大小、判断真假。Java 运算符分算术、关系、位、逻辑、赋值、三元等几大类。

算术运算符(含自增自减)

+ - * / % 做四则运算与取余,整数相除直接取整;++-- 写在变量前先加减后用,写在变量后先用后加减:

public class ArithDemo {
    public static void main(String[] args) {
        int a = 7, b = 2;
        System.out.println(a + b); // 输出:9
        System.out.println(a - b); // 输出:5
        System.out.println(a * b); // 输出:14
        System.out.println(a / b); // 输出:3(取整)
        System.out.println(a % b); // 输出:1
        int x = 5;
        System.out.println(x++);   // 输出:5(先用后加)
        System.out.println(++x);   // 输出:7(先加后用)
    }
}

关系运算符与 instanceof

> < >= <= == != 比较大小,instanceof 判断对象类型,结果都是布尔值,以下片段需放进 main 方法中运行:

int age = 18;
System.out.println(age >= 18);           // 输出:true
System.out.println(age == 20);           // 输出:false
String s = "hello";
System.out.println(s instanceof String); // 输出:true

位运算符

按二进制逐位计算:& 与、| 或、^ 异或、~ 取反、<< >> 移位,以下片段需放进 main 方法中运行:

int a = 6, b = 3;           // a=110,b=011
System.out.println(a & b);  // 输出:2(010)
System.out.println(a | b);  // 输出:7(111)
System.out.println(a << 1); // 输出:12(左移 1 位相当于乘 2)

逻辑运算符与短路

&& 与、|| 或、! 非。&& 左边为 false 或 || 左边为 true 时,右边不再执行,称为短路:

// 片段需放进 main 方法中运行
int n = 5;
System.out.println(n > 0 && n < 10); // 输出:true
boolean m = false && (10 / 0 > 1);   // 短路使右边不执行,不报错
System.out.println(m);               // 输出:false

赋值与三元运算符

= 赋值,+= 等复合赋值先运算再赋值;三元 条件 ? 值1 : 值2 按条件二选一,以下片段需放进 main 方法中运行:

int x = 10;
x += 5;                                 // 等价于 x = x + 5
String s = x >= 15 ? "达标" : "未达标";  // 三元选择
System.out.println(x);                  // 输出:15
System.out.println(s);                  // 输出:达标

运算符优先级(从高到低)

优先级运算符
括号( )
一元++ -- ! ~
乘除模* / %
加减+ -
移位<< >>
关系< > <= >= instanceof
相等== !=
位与/异或/或& ^ |
短路与/或&& ||
三元?:
赋值= += -= 等

记不住优先级没关系,复杂表达式多用括号,让意图一目了然。

常见陷阱

  • 除法取整7 / 2 得 3,想要小数要写成 7 / 2.0
  • 浮点误差0.1 + 0.2 不等于 0.3,比较小数需设定误差范围。
  • 短路副作用:别把「必须执行」的代码放在 &&|| 的右边。

运算符是表达式的积木:算术算数、关系比较、逻辑判断、三元择一;掌握优先级规律与三个常见陷阱,写表达式就能少踩坑。

笔记加载中…