Day7 | Java的流程控制详解

2025-12-12 0 701

在 Java 编程中,流程控制结构决定了程序如何执行分支判断、如何进行重复运算、如何根据状态做出不同选择,是构建逻辑的“决策中枢”。

本文将结合实战案例、行为对比和常见误区,系统讲解 Java 中的常用控制结构及其语义特性。

一、条件分支:程序的决策逻辑

条件控制就是让代码根据当前状态做出判断和选择,就像你在路口,会根据红绿灯的状态(红黄绿)来决定走还是停。

1. if-else 结构

基础语法

 if (条件1) {
     // 条件1true 时执行
 } else if (条件2) {
     // 条件2true 时执行
 } else {
     // 所有条件都不满足时执行
 }

示例

 int temperature = 28;
 if (temperature > 30) {
     System.out.println(\"开启空调\");
 } else if (temperature < 10) {
     System.out.println(\"开启暖气\");
 } else {
     System.out.println(\"当前温度适宜\");
 }

建议及提示

 // 示例中的代码你这样写也是能够正常编译,并且满足逻辑的
 int temperature = 28;
 if (temperature > 30)
     System.out.println(\"开启空调\");
 else if (temperature < 10)
     System.out.println(\"开启暖气\");
 else
     System.out.println(\"当前温度适宜\");
 ​
 // 区别就是条件语句之后的大括号都被去掉了
 // 前提条件是条件语句之后只有一句代码// 假如温度大于30度的时候,你不仅要开空调,还要打开加湿器,就会出现编译错误
 int temperature = 28;
 if (temperature > 30)
     System.out.println(\"开启空调\");
     System.out.println(\"打开加湿器\");
 else if (temperature < 10)
     System.out.println(\"开启暖气\");
 else
     System.out.println(\"当前温度适宜\");

尽量使用大括号 {} 包裹代码块,提升可读性。

2. switch 结构

switch是基于“值匹配”的条件分支选择结构,适用于明确的分类判断场景。

你打电话给100XX的时候,对面的语音机器人给你说:1-话费查询、2-宽带咨询、3-故障报修、4-人工服务等等。

当你按下具体数字键后,就进入了具体的业务板块。

基本语法

 switch (表达式) {
     case1:
         // 匹配值1时执行
         break;
     case2:
         // 匹配值2时执行
         break;
     default:
         // 无匹配时执行
 }

示例

 int dayOfWeek = 3;
 switch (dayOfWeek) {
     case 1:
         System.out.println(\"周一\"); break;
     case 2:
         System.out.println(\"周二\"); break;
     case 3:
         System.out.println(\"周三\"); break;
     default:
         System.out.println(\"无效输入\");
 }

增强写法(箭头语法)

 String result = switch (dayOfWeek) {
     case 1, 2, 3 -> \"工作日\";
     case 6, 7 -> \"周末\";
     default -> \"未知\";
 };

建议及提示

switch中支持的表达式其实一直在演进,在具体开发的时候,要注意JDK的版本。

版本 特性 代码示例
Java 5 支持枚举 case MONDAY: …
Java 7 支持字符串 case \”Apple\”: …
Java 12 箭头语法、多值匹配 case 1, 2 -> \”Winter\”
Java 13 yield 返回值 case 404 -> { … yield \”Not Found\”; }
Java 14 正式标准化 无需预览标志
Java 17 模式匹配(类型+条件) case String s && !s.isEmpty() -> …
Java 21 记录模式、泛型模式 case Point(int x, int y) -> …

刚开始使用switch的时候,如果使用的是早期JDK版本,还容易遇到穿透问题

 int day = 2;
 switch (day) {
     case 1:
         System.out.println(\"星期一\");
     case 2:
         System.out.println(\"星期二\"); // 原本想输出的
     case 3:
         System.out.println(\"星期三\"); // 实际这里也输出了(穿透)
 }
 // 本来想输出的是\"星期二\"// 实际的输出却是星期二 星期三
 // 主要是没有加上break语句

当某个 case 分支没有使用 break 语句时,程序会继续执行后续的 case 代码,直到遇到 break 或 switch 结束。

二、循环控制:让程序自动重复

当你需要让某些操作不断执行,直到满足某个条件,就需要使用循环控制结构。

想一下你家的洗衣机,当你按下开关,中间大部分时间是不是都是滚筒在正转、反转不停的重复,直到到时间(或者其条件)才不再循环去干其他事情。

1. for 循环(固定次数)

 int sum = 0;
 for (int i = 1; i <= 10; i++) {
     sum += i;
 }
 System.out.println(sum);  // 输出55

示例代码中有了很多Java的运算符的使用,如果不熟悉可以回看下Day5文章

避免死循环(如条件始终为 true)。

 while (true) {
     // 做点什么
 }
 ​
 for (;;) {
     // 做点什么
 }
 // 没有明确退出的条件,程序将一直运行(循环)下去
 // 你可以把上面两段代码拷贝到IDEA中运行一下,除非你手动终止程序的运行,否则它将一直运行下去

在实际开发中,特别是对于刚接触编程,对于死循环的应用要慎重!

JDK源码中确实也存在一些死循环的形式,所以也不要过于妖魔化死循环。重要的还是把握使用场景及退出的机制。

添加图片注释,不超过 140 字(可选)

2. while 循环(条件型)

while 在每次执行前判断条件,适合“不知道执行几次”的场景。

 Scanner scanner = new Scanner(System.in);
 int input;
 System.out.print(\"请输入1~100之间的数字:\");
 while (true) {
     input = scanner.nextInt();
     if (input >= 1 && input <= 100) break;
     System.out.print(\"输入无效,请重新输入:\");
 }

输入校验、监听某个状态等未知次数循环。

3. do-while 循环(至少执行一次)

do-while 先执行,再判断是否继续,适合“至少执行一次”的场景。

 int choice;
 do {
     System.out.println(\"1. 开始游戏n2. 加载存档n3. 退出\");
     choice = scanner.nextInt();
 } while (choice  3);

4. for-each 循环(增强型)

for-each 用于遍历集合或数组,语法更简洁,强调“遍历”而非控制。

 int[] arr = {1, 2, 3};
 for (int num : arr) {
     System.out.println(num);
 }

比较适合只读场景,无法修改索引位置。

背后是 Iterator 实现,对集合安全性好。

三、循环控制关键字

循环过程中,我们常常需要“提前退出”或“跳过某次”,这就用到了这些控制语句。

1. break:立即终止整个循环

 for (int i = 1; i <= 10; i++) {
     if (i % 3 == 0) {
         System.out.println(\"找到:\" + i);
         break;
     }
 }

2. continue:跳过当前这次循环

 for (int i = 1; i <= 5; i++) {
     if (i == 3) continue;
     System.out.println(i);
 }

3. return:退出整个方法

 public void check(int num) {
     if (num < 0) return;
     System.out.println(\"有效数字\");
 }

四、结构与语义对比

结构 适合场景 判断点位置 可读性
if-else 条件判断,灵活分支 语句前
switch 离散枚举、菜单选择 语句前
for 明确次数的迭代 语句前
while 条件不定,未知次数 语句前
do-while 必须先执行再判断 语句后

五、综合练习题

先看懂1、2,再动手写一下3

1.判断一个数是否为质数

 int num = 17;
 boolean isPrime = true;
 for (int i = 2; i <= Math.sqrt(num); i++) {
     if (num % i == 0) {
         isPrime = false;
         break;
     }
 }
 System.out.println(num + (isPrime ? \"是质数\" : \"不是质数\"));

2.九九乘法表

 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();
 }

3.简易命令行计算器(结合循环 + switch)

结语

流程控制语法的掌握,是编程真正通人性的第一步。

其实设计这些流程控制结构,完全可以投射到现实生活中,用现实生活来套这些结构就比较容易理解了。

  • if-else 负责决策
  • switch 提高结构化
  • for/while 驱动自动行为

这些控制结构虽然语法简单,但逻辑无限强大。

就跟现实生活中你离不开选择判断、离不开重复(循环)一样,程序(项目)也离不开这些控制结构。

下一篇预告

如果你觉得这系列文章对你有帮助,欢迎关注专栏,我们一起坚持下去!

更多文章请关注我的公众号《懒惰蜗牛工坊》

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 Day7 | Java的流程控制详解 https://www.zuozi.net/35774.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务