流程控制语句

流程控制语句

流程控制语句用于控制程序中各语句的执行顺序。Java 流程控制分为三类:

  • 顺序结构:默认执行顺序,从上到下依次执行
  • 分支结构:根据条件选择执行不同代码(if-else, switch)
  • 循环结构:重复执行某段代码(for, while, do-while)

1. if-else 分支语句

1.1 基本 if

语法:

if (条件表达式) {
    // 条件为 true 时执行的代码
}

示例:

int age = 20;
if (age >= 18) {
    System.out.println("成年人");
}

1.2 if-else

语法:

if (条件表达式) {
    // 条件为 true 时执行
} else {
    // 条件为 false 时执行
}

示例:

int score = 59;
if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

1.3 多重 if

多个条件依次判断:

if (条件1) {
    // 条件1 为 true 执行
} else if (条件2) {
    // 条件1 为 false,条件2 为 true 执行
} else {
    // 所有条件都为 false 执行
}

示例:根据分数评等级:

int score = 85;
if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 80) {
    System.out.println("良好");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}
// 输出:良好

💡 只有第一个满足条件的分支会执行,找到后就不会继续判断后面的条件了。

2. switch-case 多分支语句

switch 用于匹配一个表达式的值,匹配到哪个 case 就执行哪个分支。

语法:

switch (表达式) {
    case 值1:
        代码1;
        break;
    case 值2:
        code2;
        break;
    default:
        默认代码;
        break;
}
  • 表达式类型:可以是 byte, short, int, char, enum, String(Java 7+ 支持)
  • break:跳出 switch,如果没有 break,会继续执行后面的 case(穿透)
  • default:所有 case 都不匹配时执行,可选

示例 1:根据数字判断星期几:

int day = 3;
switch (day) {
    case 1:
        System.out.println("星期一");
        break;
    case 2:
        System.out.println("星期二");
        break;
    case 3:
        System.out.println("星期三");
        break;
    case 4:
        System.out.println("星期四");
        break;
    case 5:
        System.out.println("星期五");
        break;
    case 6:
        System.out.println("星期六");
        break;
    case 7:
        System.out.println("星期日");
        break;
    default:
        System.out.println("输入错误");
        break;
}
// 输出:星期三

示例 2:case 穿透,多个值共享同一逻辑:

int month = 5;
switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
        System.out.println("31 天");
        break;
    case 4:
    case 6:
    case 9:
    case 11:
        System.out.println("30 天");
        break;
    case 2:
        System.out.println("28 或 29 天");
        break;
}
// 输出:31 天

利用穿透可以让多个 case 共用代码,减少重复。

3. for 循环

for 循环适合知道循环次数的情况。

语法:

for (初始化; 条件表达式; 更新) {
    // 循环体,重复执行的代码
}

执行流程:

  1. 执行初始化
  2. 判断条件,如果为 false,结束循环
  3. 如果为 true,执行循环体
  4. 执行更新
  5. 回到步骤 2

示例:输出 1 到 10:

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

执行过程:

  • i = 1,1 <= 10 → true → 输出 1 → i++ → i = 2
  • i = 2,2 <= 10 → true → 输出 2 → i++ → i = 3
  • … 直到 i = 11,11 <= 10 → false → 循环结束

示例:计算 1 到 100 的和:

int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum += i;
}
System.out.println("1+2+...+100 = " + sum);
// 输出:5050

3.1 增强 for 循环

增强 for 循环适合遍历数组或集合,语法更简洁:

int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
    System.out.println(number);
}

如果需要索引、倒序遍历或修改指定位置元素,仍然使用普通 for 循环。

4. while 与 do-while 循环

4.1 while 循环

while 适合不知道循环次数,满足条件就继续循环。

语法:

while (条件) {
    // 循环体
}

先判断条件,条件为 true 执行循环体,然后再判断,直到条件为 false 结束。

示例:输出 1 到 10:

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

示例:计算 1 到 100 的和:

int sum = 0;
int i = 1;
while (i <= 100) {
    sum += i;
    i++;
}
System.out.println(sum); // 5050

4.2 do-while 循环

语法:

do {
    // 循环体
} while (条件);

特点:先执行一次循环体,再判断条件,所以循环体至少执行一次。

示例:

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

5 break 与 continue

5.1 break

break 用于跳出整个循环或跳出 switch:

示例:找到第一个能被 17 整除的数就停止:

for (int i = 1; i <= 100; i++) {
    if (i % 17 == 0) {
        System.out.println("找到了:" + i);
        break; // 跳出循环,不再继续
    }
}
// 输出:找到了:17

5.2 continue

continue 用于跳过本次循环,进入下一次循环:

示例:输出 1 到 10 中所有奇数:

for (int i = 1; i <= 10; i++) {
    if (i % 2 == 0) {
        continue; // 如果是偶数,跳过本次循环,不输出
    }
    System.out.println(i);
}
// 输出:1 3 5 7 9

对比 break 和 continue:

  • break:直接结束整个循环
  • continue:只结束本次循环,继续下一次循环

6. 嵌套循环

循环里面还可以套循环,叫做嵌套循环。

示例:打印九九乘法表:

for (int i = 1; i <= 9; i++) {           // 外层循环,控制行
    for (int j = 1; j <= i; j++) {       // 内层循环,控制列
        System.out.print(j + "×" + i + "=" + (i * j) + "t");
    }
    System.out.println(); // 换行
}

输出:

1×1=1
1×2=2  2×2=4
1×3=3  2×3=6  3×3=9
...

示例:打印矩形:

// 打印 5 行 8 列的星号矩形
for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 8; j++) {
        System.out.print("*");
    }
    System.out.println();
}
上一篇
下一篇