Java必备基础知识:控制结构 超详细!(分支、循环、break、continue)

专栏系列文章

Java必备基础知识:输入与输出-CSDN博客

超详细进制转换(二进制、八进制、十进制、十六进制)!-CSDN博客

Java必备基础知识:各种运算符的理解及运用-CSDN博客


文章目录

文章目录

前言

一、顺序结构

二、分支结构(if-else,switch)

1、单分支( if 语句)

2、双分支( if - else 语句)

3、多分支(多重 if - else 或 switch )

三、循环结构(for,while,do while)

1、for 循环

2、while 循环

3、do while 循环

四、break

五、continue

六、return

总结


前言

这篇文章将带大家系统梳理 Java 控制结构知识,从基础的分支、循环,到流程控制关键字,用清晰示例和通俗讲解,帮你筑牢编程逻辑根基。


一、顺序结构

顺序结构是程序中最基本的结构,程序会按照代码的书写顺序,从上到下、逐行执行每条语句,直到程序结束。就像我们做事情需要一步一步来一样,程序也是如此。这个不必多说,我们看一下例子就能理解。

// 顺序结构
public class Main {
    public static void main(String[] args) {
        // 第1步:定义变量
        int a = 5;
        int b = 3;
        
        // 第2步:计算两数之和
        int sum = a + b;
        
        // 第3步:打印结果
        System.out.println("a + b = " + sum);
        
        // 第4步:修改变量的值
        a = 10;
        b = 20;
        
        // 第5步:再次计算两数之和
        sum = a + b;
        
        // 第6步:再次打印结果
        System.out.println("修改后 a + b = " + sum);
    }
}

二、分支结构(if-else,switch)

分支结构允许程序根据条件判断结果选择不同的执行路径,就像走路时遇到岔路口,需要根据路标选择方向一样。Java 中主要有两种分支语句:if-else 和 switch。根据可选路径的数量,可分为单分支双分支多分支三种。

1、单分支( if 语句)

只有一个执行路径,当条件成立时执行某段代码,不成立则跳过。语法如下:

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

2、双分支( if - else 语句)

有两个执行路径,条件成立时走一条路,不成立时走另一条路,必选其一。语法如下:

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

3、多分支(多重 if - else 或 switch )

有多个执行路径,根据不同条件匹配不同的代码块,最终只会执行其中一个(或默认路径)。

(1)用 if-else if-else 实现多分支

if (条件1) {
    // 条件1为true时执行
} else if (条件2) {
    // 条件1为false、条件2为true时执行
} else if (条件3) {
    // 前两个条件都为false、条件3为true时执行
} else {
    // 所有条件都为false时执行(可选)
}

(2) 用 switch 实现多分支(值匹配型)

switch (变量/表达式) {
    case 值1:
        ...// 变量等于值1时执行的代码块
        break;  // 退出switch,避免继续执行下一个case
    case 值2:
        ...// 变量等于值2时执行的代码块
        break;
    default:
        ...// 变量不匹配任何case时执行的代码块(可选)
}

 注意事项:

        1、同一个switch中的每个 case 值必须唯一。

        2、case可以合并:多个连续的 case 可以共用一个代码块(省略 break)。

int month = 2;
switch (month) {

    // month值为1、3、5、7、8、10、12中的某一个时,执行同一个代码块
    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;

    default:
        System.out.println("无效月份");
}

        3、 default 块用于处理所有未匹配的情况,可以在任意位置,但是注意break的使用。

        4、case 中直接使用枚举常量名,无需指定枚举类名。

enum Color { RED, GREEN, BLUE }
Color c = Color.RED;

switch (c) {
    case RED:    // 直接写RED即可
        System.out.println("红色");
        break;
    case GREEN:
        System.out.println("绿色");
        break;
    case BLUE:
        System.out.println("蓝色");
        break;
}

 分支结构的代码示例如下:

public class BranchStructureExample {
    public static void main(String[] args) {
        // 单分支示例:判断年龄是否成年
        int age = 18;
        if (age >= 18) {
            System.out.println("已成年,可以独立出行");
        }

        // 双分支示例:判断一个数是正数还是负数
        int num = -5;
        if (num > 0) {
            System.out.println("这是一个正数");
        } else {
            System.out.println("这是一个非正数(负数或0)");
        }

        // 多分支示例1:if-else if-else判断成绩等级
        int score = 85;
        if (score >= 90) {
            System.out.println("等级:A");
        } else if (score >= 80) {
            System.out.println("等级:B");
        } else if (score >= 60) {
            System.out.println("等级:C");
        } else {
            System.out.println("等级:D(不及格)");
        }

        // 多分支示例2:switch判断星期几的计划
        int week = 5;
        switch (week) {
            case 1:
                System.out.println("周一:背单词");
                break;
            case 5:
                System.out.println("周五:写周报");
                break;
            case 6:
            case 7:
                System.out.println("周末:休息");
                break;
            default:
                System.out.println("工作日:正常上班");
        }
    }
}

三、循环结构(for,while,do while)

1、for 循环

for 循环适用于已知循环次数的场景,语法:

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

执行流程

  1. 初始化:执行一次,通常用于定义循环变量(如 int i = 0)。
  2. 条件判断:每次循环前检查条件,为 true 则执行循环体,为 false 则结束循环。
  3. 执行循环体:条件满足时执行的代码。
  4. 迭代:每次循环结束后执行(如 i++),然后回到步骤 2。

 示例:打印 1 到 5 的数字

for (int i = 1; i <= 5; i++) {
    System.out.println(i);  // 输出:1 2 3 4 5
}

2、while 循环

while 循环根据条件判断是否继续循环,适用于未知循环次数。语法:

while (条件表达式) {
    // 循环体
}

执行流程

  1. 条件判断:每次循环前检查条件,为 true 则执行循环体,为 false 则结束。
  2. 执行循环体:条件满足时执行。
  3. 回到步骤 1:循环体执行后再次判断条件。

注意:需确保循环体内有修改条件的代码,否则会死循环

示例:计算 1 到 100 的和

int sum = 0;
int i = 1;
while (i <= 100) {
    sum += i;  // 累加i到sum
    i++;       // 避免死循环
}
System.out.println("总和:" + sum);  // 输出:5050

3、do while 循环

do while 循环与 while 类似,不同的是 do while 循环先执行后判断,所以循环体至少执行一次。语法:

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

执行流程

  1. 执行循环体:首次无条件执行一次。
  2. 条件判断:执行后检查条件,为 true 则继续循环,为 false 则结束。
  3. 回到步骤 1:条件满足时重复执行。

 示例:用户输入验证

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
int num;
do {
    System.out.print("请输入一个正数:");
    num = scanner.nextInt();
} while (num <= 0);  // 若输入非正数,继续循环
System.out.println("输入的正数是:" + num);

四、break

break 语句能够立即终止当前所在的循环或 switch 语句,跳出该结构,执行后续代码。

注意事项:

  • 嵌套循环中,break 只会终止当前所在的内层循环,外层循环不受影响。
  • 不能用于循环 /switch 外break 只能出现在循环(for/while/do-while)或 switch 中,
  • 若想终止外层循环,可以通过标签实现。语法:
    在循环前添加 标签名:
    然后使用 break 标签名; 
    跳出该循环。

示例:

// 嵌套循环
for (int i = 1; i <= 2; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) {
            break;  // 只终止内层循环(j的循环)
        }
        System.out.print(j + " ");  // 输出:1 1
    }
}

// 带标签的用法(跳出外层循环)
outer:  // 定义标签
for (int i = 1; i <= 2; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) {
            break outer;  // 终止带标签的外层循环
        }
        System.out.print(j + " ");  // 输出:1
    }
}

五、continue

continue 语句能跳过当前循环的剩余代码,直接进入下一次循环迭代。其用法和 break 一致。这里做一个简单示例:

// 在 while 循环中的用法
int i = 0;
while (i < 5) {
    i++;
    if (i == 3) {
        continue;  // 跳过后续代码,回到循环条件判断
    }
    System.out.print(i + " ");  // 输出:1 2 4 5
}

// 带标签的用法(跳到外层循环的下一次迭代)
outer:
for (int i = 1; i <= 2; i++) {
    for (int j = 1; j <= 3; j++) {
        if (j == 2) {
            continue outer;  // 跳到外层循环的下一次迭代
        }
        System.out.print(j + " ");  // 输出:1 1
    }
}

六、return

return 语句能终止当前方法的执行。如果有返回值给,返回结果调用者,否则直接结束整个方法。此处不再赘述,给个例子简单理解:

public int calculateSum() {
    int sum = 0;
    for (int i = 1; i <= 10; i++) {
        if (i > 5) {
            return sum;  // 返回当前sum的值(1+2+3+4+5=15)
        }
        sum += i;
    }
    return sum;
}

最后,我们再来直观对比总结一下:

关键字 作用范围 对当前结构的影响 后续代码执行情况
break 循环或 switch 完全终止当前结构 继续执行结构后的代码
continue 循环 跳过本次循环剩余代码 继续执行下一次循环迭代
return 整个方法 终止整个方法 方法立即结束,返回调用者

示例对比:

public void testKeywords() {
    for (int i = 1; i <= 5; i++) {
        if (i == 3) {
            break;     // 输出:1 2
            // continue;  // 输出:1 2 4 5
            // return;    // 输出:1 2
        }
        System.out.print(i + " ");
    }
    System.out.println("循环后代码");  // break/continue会执行,return不会执行
}

总结

以上就是本文的全部内容啦!Java 控制结构是程序逻辑实现的核心工具。分支结构(if-elseswitch)让程序能依据条件应对多样场景;循环结构(forwhiledo-while)助力高效完成重复任务;breakcontinuereturn 则为流程调控提供灵活手段。掌握这些控制结构,能让你编写的程序逻辑清晰。

你可能感兴趣的:(Java必备基础知识:控制结构 超详细!(分支、循环、break、continue))