控制执行流程 --《JAVA编程思想》13

本文详细介绍了Java中的流程控制关键字,包括if-else条件判断,while、do-while、for、foreach循环,以及continue和break的使用。此外,还讲解了switch选择语句的运用,展示了不同情况下的代码执行效果。对于理解和掌握Java控制流程,本文提供了清晰的实例解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生活中存在各种选择,程序也是一样,拥有不同的执行路线。今天我们来看看 JAVA 中如何进行流程控制,首先了解各类控制流程关键字的用法。

1.if - else
if - else 是最基本的流程控制形式,if () 内放入布尔表达式,表达式结果为 true 则执行 if 后{} 中的内容,否则执行 else { }中的内容, 其中 else 为可选项。

(1) if - else

        int number = 1;
        if (number % 2 == 0) {
            System.out.println("我是偶数");
        } else {
            System.out.println("我是奇数");
        }
我是奇数

(2)if

        int number = 2;
        if (number % 2 == 0) {
            System.out.println("我是偶数");
        }
我是偶数

2.循环(while、do-while、for、foreach)
while、do-while、for、foreach 都可以用来控制循环(循环也称为迭代),下面我们来依次了解。

(1)while
while() 内放入布尔表达式,每次循环前,都会进行一次判断,为 false 继续循环,为 true 跳出循环。

        int number = 1;
        while (number < 5) {
            System.out.println("number===" + number);
            number++;
        }
number===1
number===2
number===3
number===4

(2)do-while
do-while 的用法与 while 类似,区别在于:do-while 至少会执行一次循环,无论 while 内布尔表达式的结果是否为 true。

        int number = 6;
        do {
            System.out.println("number===" + number);
            number++;
        }
        while (number < 5);
number===6

(3)for
for 循环由三部分组成:初始化表达式、布尔表达式、步进;步进为可选项;

布尔表达式为 true 则继续循环,false 则结束循环。

a. 初始化表达式 + 布尔表达式 + 步进

      for (int i = 0; i < 5; i++) {
            System.out.println("i====" + i);
        }
i====0
i====1
i====2
i====3
i====4

b. 初始化表达式 + 布尔表达式

        for (int i = 0; i < 5; ) {
            System.out.println("i====" + i);
            i++;
        }
i====0
i====1
i====2
i====3
i====4

(4)foreach
foreach 可用来遍历数组或者集合,会根据顺序依次遍历其中的每个对象,foreach 的性能是所有循环中最优的,推荐优先使用。

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

在使用循环的过程中,我们可能会遇到跳过单次循环或者突然中断循环的场景,这时候需要用到 continue (跳过单次循环),break(中断整个循环)。

continue
执行 continue 后,本次循环的后续代码将不会执行,将跳至循环体开始处继续进行下一次循环。

        int[] numberArray = {1, 2, 3, 4, 5};
        for (int number : numberArray) {
            if (number == 3) {
                continue;
            }
            System.out.println("number===" + number);
        }
number===1
number===2
number===4
number===5

break
执行 break 后,整个循环立刻强行结束,本次循环的后续代码也不会执行。

        int[] numberArray = {1, 2, 3, 4, 5};
        for (int number : numberArray) {
            if (number == 3) {
                break;
            }
            System.out.println("number===" + number);
        }
number===1
number===2

循环中我们还可以用到标签,用来作为循环的标识,在使用嵌套循环的时候,可以对指定循环执行 continue 或者 break 操作(例如:在内部循环终止最外层的循环)。

        external:
        for (int i = 0; i < 4; i++) {
            if (i == 2) {
                System.out.println("continue external");
                continue external;
            }
            System.out.println("i===" + i);
            inner:
            for (int j = 9; j < 13; j++) {
                if (j == 10) {
                    System.out.println("continue inner");
                    continue inner;
                }
                if (i == 3 && j == 11) {
                    System.out.println("break externals");
                    break external;
                }
                if (j == 12) {
                    System.out.println("break inner");
                    break inner;
                }
                System.out.println("j===" + j);
            }
        }
i===0
j===9
continue inner
j===11
break inner
i===1
j===9
continue inner
j===11
break inner
continue external
i===3
j===9
continue inner
break externals

external 表示外部循环,inner 表示内部循环,若在使用 continue 或 break 的时候,未注明生效的标签,则默认使用就近原则,针对靠的最近的循环生效。

3.switch
switch 为一种选择语句,小括号的内容(只能为 int 或者 String 类型)根据 case 给出的类型一一匹配,执行符合类型后跟随的代码内容。

        for (int i = 0; i < 5; i++) {
            System.out.print("i===" + i + "\t");
            switch (i) {
                case 1:
                    System.out.print("我是数字1" + "\n");
                    break;
                case 2:
                    System.out.print("我是数字2" + "\n");
                    break;
                case 3:
                    System.out.print("我是数字3" + "\n");
                    break;
                case 4:
                    System.out.print("我是数字4" + "\n");
                    break;
                default:
                    System.out.print("未匹配上任何数字" + "\n");
                    break;
            }
        }
i===0	未匹配上任何数字
i===1	我是数字1
i===2	我是数字
i===3	我是数字3
i===4	我是数字4

我们看到每个 case 执行内容后,都加入了 break 关键字,表示终止 switch ;倘若不加 break ,还会继续往执行所有剩余的 case 内的代码(无论是否匹配) ,直至完成所有匹配或者遇到一个 break 为止;default 关键字表示,没有匹配上任何 case ,则执行 dufault 内的代码,default 为可选项。

        for (int i = 0; i < 5; i++) {
            System.out.print("i===" + i + "\t");
            switch (i) {
                case 1:
                    System.out.print("我是数字1" + "\n");
                case 2:
                    System.out.print("我是数字2" + "\n");
                case 3:
                    System.out.print("我是数字3" + "\n");
                case 4:
                    System.out.print("我是数字4" + "\n");
                default:
                    System.out.print("未匹配上任何数字" + "\n");
            }
        }
i===0	未匹配上任何数字
i===1	我是数字1
我是数字2
我是数字3
我是数字4
未匹配上任何数字
i===2	我是数字2
我是数字3
我是数字4
未匹配上任何数字
i===3	我是数字3
我是数字4
未匹配上任何数字
i===4	我是数字4
未匹配上任何数字

除此之外,我们还可以将多个 case 叠加在一起共用同一块代码执行内容,虽然 dfault 内的 break 起不到实质性的作用,但为了舒适的代码阅读性,建议还是加上使用。

        for (int i = 0; i < 5; i++) {
            System.out.print("i===" + i + "\t");
            switch (i) {
                case 0:
                case 1:
                case 2:
                case 3:
                    System.out.print("这个数字小于3" + "\n");
                    break;
                default:
                    System.out.print("这个数字大于等于3" + "\n");
                    break;
            }
        }
i===0	这个数字小于3
i===1	这个数字小于3
i===2	这个数字小于3
i===3	这个数字小于3
i===4	这个数字大于等于3

本次分享至此结束,希望本文对你有所帮助,若能点亮下方的点赞按钮,在下感激不尽,谢谢您的【精神支持】。

若有任何疑问,也欢迎与我交流,若存在不足之处,也欢迎各位指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BaymaxCS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值