news 2026/4/15 15:45:45

Java流程控制:从条件判断到循环遍历

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java流程控制:从条件判断到循环遍历

Java 流程控制:从条件判断到循环遍历(核心总结 + 实战要点)

Java 的流程控制语句主要分为三大类:

  1. 条件判断(选择结构)
  2. 循环结构(重复执行)
  3. 跳转语句(控制流程走向)

下面按重要程度和使用频率逐一讲解,附带常见误区和最佳实践。

一、条件判断(选择结构)

1. if 语句(最常用)
// 基本形式if(条件){// 条件为 true 时执行}// 带 elseif(条件){// true}else{// false}// 多分支if(条件1){// ...}elseif(条件2){// ...}elseif(条件3){// ...}else{// 都不满足}

注意事项

  • 条件必须是boolean类型(不能写if (a = 5)
  • 大括号{}强烈建议始终写上,即使只有一行代码(防止后续维护出错)

经典错误示例(新手高频坑):

intscore=85;if(score>=90)System.out.println("优秀");System.out.println("恭喜!");// 这行无条件执行!!!

正确写法:加{}或写成一行

2. switch 语句(多分支选择)

JDK 早期版本(经典写法)

intday=3;switch(day){case1:System.out.println("星期一");break;case2:System.out.println("星期二");break;default:System.out.println("其他");break;}

JDK 12+ 增强版(推荐使用)→ switch 表达式(更简洁)

Stringresult=switch(day){case1,2,3,4,5->"工作日";case6,7->"周末";default->"非法输入";};

switch 表达式特点

  • 使用->(箭头语法)
  • 自动结束(不需要 break)
  • 可以直接赋值给变量
  • 支持yield返回值(更复杂情况)
Stringdesc=switch(score/10){case10,9->"优秀";case8->"良好";case7->"中等";default->{yield"不及格";// 多语句时用 yield}};

二、循环结构(重复执行)

1. while 循环(先判断后执行)
inti=1;while(i<=10){System.out.println(i);i++;}

适用场景:不知道要循环多少次(比如读文件、等待输入)

2. do-while 循环(先执行后判断)
inti=1;do{System.out.println(i);i++;}while(i<=10);

特点至少执行一次(即使条件一开始就不成立)

经典使用场景:菜单选择系统(先显示菜单再判断用户输入)

3. for 循环(最常用,结构最清晰)

传统 for 循环

for(inti=0;i<10;i++){System.out.println(i);}

增强 for 循环(for-each)—— 遍历集合或数组首选

int[]arr={10,20,30,40};for(intnum:arr){System.out.println(num);}List<String>names=Arrays.asList("张三","李四","王五");for(Stringname:names){System.out.println(name);}

for 循环的几种常见写法对比

写法适用场景可否修改循环变量推荐指数
for (int i = 0; i < n; i++)需要索引、计数、步长控制可以★★★★★
for (int i = n-1; i >= 0; i--)逆序遍历可以★★★★☆
for (元素 : 集合/数组)只读遍历,不需要索引不能修改索引★★★★★
for(;;)死循环(配合 break 使用)★★★☆☆

三、跳转语句(改变正常执行流程)

语句作用常用场景注意事项
break跳出当前循环(单层)提前结束循环可配合标签跳出多层循环
continue跳过本次循环,进入下一次循环满足条件时跳过本次剩余代码只影响当前循环层
return结束整个方法,返回结果(或无返回)方法提前返回在循环中使用会直接结束方法

带标签的 break / continue(少用,但能解决嵌套循环问题)

outer:for(inti=1;i<=5;i++){for(intj=1;j<=5;j++){if(j==3){breakouter;// 直接跳出两层循环// continue outer; // 跳到外层循环下一轮}System.out.println(i+"-"+j);}}

四、常见面试 / 易错点速记

  1. if后面不要写分号;
    if (a > b); { ... }→ 大括号内容无条件执行

  2. switch 漏写 break →case 穿透(有时故意用,有时是 Bug)

  3. for 循环中修改集合(add/remove) →ConcurrentModificationException

    正确做法

    • 用迭代器删除:iterator.remove()
    • 收集要删除的元素后统一删除
    • for (int i = list.size()-1; i >= 0; i--)逆序删除
  4. while(true) 死循环忘记 break

  5. 增强 for 循环中不能修改集合结构

五、快速练习题(建议动手写)

  1. 用 switch 表达式实现输入 1~12 返回对应月份的英文
  2. 打印 1~100 内所有 3 的倍数或 5 的倍数(用 continue 跳过不符合的)
  3. 用嵌套循环打印 9×9 乘法表
  4. 统计字符串中每个字符出现的次数(用数组或 HashMap)
  5. 求 1~1000 内所有“水仙花数”(三位数,每位数字立方和等于本身)

如果你想针对某个语句深入讲解(比如 switch 表达式的所有用法、for 循环的性能细节、多层循环的优化等),或者需要某道题的参考答案,可以直接告诉我,我继续展开。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 0:18:03

【YOLOv8多模态涨点改进】独家创新首发 | TGRS 2025 | 引入CGSAFusion跨模态门控注意力融合模块,通过自注意力机制 和 门控融合提升多模态信息融合,助力红外与可见光检测高效涨点

一、本文介绍 🔥本文给大家介绍使用 CGSA(Cross-Domain Gated Self-Attention)跨模态门控注意力融合模块 改进 YOLOv8 多模态目标检测 模型,可以通过自注意力机制和门控融合动态增强可见光与红外图像之间的特征交互,显著提升小目标检测能力。CGSA 通过频域信息和时域差异…

作者头像 李华
网站建设 2026/4/14 19:26:40

蜜雪冰城 小程序 sign 分析

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;部分python代码url "/api/v2/sho…

作者头像 李华
网站建设 2026/4/3 20:12:28

例说FPGA:可直接用于工程项目的第一手经验【3.7】

18.4 软件程序解析 1.main.c源文件软件程序解析 main.c的函数列表如表18-2所示。 表18-2 main.c文件的函数列表 2.int main(void)函数 主函数上电后稍作延时,主要是确保ADV7513芯片进入工作状态,接着给连接逻辑端hdmi_mode信号的PIO赋值,设置HDMI驱动的分辨率。代码中已经…

作者头像 李华
网站建设 2026/3/19 5:28:31

【Dubbo服务找不到?从抓耳挠腮到一键解决,全流程干货!】

作为一名天天和BUG贴贴的程序员&#xff0c;排查问题就像拆盲盒——你永远不知道下一个坑是逻辑bug、环境搞怪&#xff0c;还是同事偷偷改的配置让你当场破防。而最让人崩溃的&#xff0c;当属Dubbo服务找不到的坑&#xff01;就像你约了朋友吃饭&#xff0c;到地方发现人没影&…

作者头像 李华
网站建设 2026/3/26 6:19:11

【netty】EventLoop

eventloop 可以处理channel上 accept、read、write等io事件1.单线程执行器2.维护了一个selector如果传入线程数&#xff0c;则使用传入的线程数如果没有传入线程数&#xff0c;则获取配置的线程数 与 系统的cpu核数*2 比大小防。 止存在0线程的情况&#xff0c;所以与1比大小&a…

作者头像 李华