Skip to content

02-运算符与流程控制

对应原始资料:day02-运算符&选择语句day03-循环语句

一、运算符

1. 算术运算符

+-*/%++--

java
// 整数相除只能得到整数
System.out.println(10 / 3);    // 3
System.out.println(10 % 3);    // 1

// 字符参与运算:用码表值
System.out.println('A' + 1);   // 66

// 字符串拼接:+ 只要有字符串参与就是拼接
System.out.println("a" + 1 + 2);  // "a12"
System.out.println(1 + 2 + "a");  // "3a"

++ / --

java
int a = 5;
int b = a++;   // 先用后加,b=5, a=6
int c = ++a;   // 先加后用,a=7, c=7

2. 赋值运算符

=+=-=*=/=%=

s += 1 等价于 s = (s的类型)(s + 1)自带强转,不会丢失精度。

3. 关系运算符

==!=><>=<= → 结果是 boolean

4. 逻辑运算符

  • & 与、| 或、! 非、^ 异或
  • 短路与 &&:左边为 false 时右边不执行。
  • 短路或 ||:左边为 true 时右边不执行。
java
int x = 3, y = 4;
System.out.println(++x > 4 && y-- > 4);  // 注意自增/自减与短路联用

5. 三元运算符

java
int a = 5, b = 10;
int max = (a > b) ? a : b;   // 10

6. 位运算(了解)

&|^~<<>>>>>

  • << 左移:乘 2
  • >> 右移:除 2
  • 对称数交换:a ^= b; b ^= a; a ^= b;

二、选择语句

1. if 语句

java
if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

2. switch 语句

java
switch (week) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        System.out.println("工作日");
        break;          // 不写 break 会"穿透"
    case 6:
    case 7:
        System.out.println("休息日");
        break;
    default:
        System.out.println("输入有误");
}

switch 支持的类型:byteshortcharintString(JDK7+)、枚举(JDK5+)。

三、循环语句

1. for 循环

java
for (int i = 1; i <= 10; i++) {
    System.out.println(i);
}

2. while 循环

java
int i = 1;
while (i <= 10) {
    System.out.println(i);
    i++;
}

3. do...while 循环

java
int i = 1;
do {
    System.out.println(i);
    i++;
} while (i <= 10);   // 至少执行一次

4. 三种循环的选择

  • 次数明确 → for
  • 次数不明确 → while
  • 至少执行一次 → do...while

5. 死循环与跳转控制

java
// 死循环
while (true) { ... }

// break:结束整个循环
// continue:结束本次,进入下一次
for (int i = 1; i <= 10; i++) {
    if (i % 3 == 0) continue;   // 跳过 3 的倍数
    if (i == 8) break;          // 到 8 结束
    System.out.println(i);
}

四、循环嵌套与经典案例

1. 九九乘法表

java
for (int i = 1; i <= 9; i++) {
    for (int j = 1; j <= i; j++) {
        System.out.printf("%d*%d=%d\t", j, i, i * j);
    }
    System.out.println();
}

2. 猜数字游戏

java
int target = new Random().nextInt(100) + 1;
Scanner sc = new Scanner(System.in);
while (true) {
    int guess = sc.nextInt();
    if (guess > target)      System.out.println("大了");
    else if (guess < target) System.out.println("小了");
    else { System.out.println("猜对了"); break; }
}

练习建议

  1. 用 for 求 1~100 的偶数和、奇数和。
  2. 打印三角形、九九乘法表、菱形。
  3. 写一个简易计算器(Scanner + switch)。
  4. 实现「逢七过」游戏逻辑。