写在前面:大家好!真的非常抱歉,没能兑现最初每天更新的承诺。过去两周,我一门心思扑在毕业论文和答辩上,忙得不可开交。好在现在一切都已圆满结束,从今天起,我会恢复每日更新,也恳请各位朋友监督我,谢谢大家!
目录
3.3 for循环、while循环、do -while循环总结
程序流程控制
什么是程序流程控制?
简单来说就是控制程序的执行顺序
程序流程控制有几种形式?
共有三种,分别是顺序结构、分支结构、循环结构
顺序结构:不加任何控制,从main方法开始自上而下的执行代码
分支结构:根据条件判断true 或 false,选择对应代码执行[if switch]
循环结构:控制某段代码重复执行[for while do-while]
一、分支结构
1.if分支
根据条件判断得到 true 或 false,然后来决定执行哪段代码
1.1 if分支在Java中的三种形式
第一种:
if(条件表达式){ 执行代码; }
说明:如果条件结果为true,就执行代码;如果条件结果位false,就跳出当前分支,执行其他代码
执行流程图:
第二种:
if(条件表达式){ 执行代码1; }else{ 执行代码2; }
说明:如果判断条件结果为true,就执行代码1;如果结果为false,就执行else代码2,最后跳出分支,继续执行其他代码
执行流程图:
第三种:
if(条件表达式1){ 执行代码1; }else if(条件表达式2){ 执行代码2; }else if(条件表达式3){ 执行代码3; }...else{ 执行代码n; }
说明:如果条件表达式1结果为true,就执行代码1,如果为false,就往下执行条件表达式2……如果一直是false,那么就执行else里的代码n;最后跳出分支执行其他代码
执行流程图:
1.2 if分支案例应用
第一种:
package com.zhenkai.branch.ifexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class IfExplainOne { public static void main(String[] args) { /*目标:掌握if分支第一种形式的写法*/ //案例需求:评测气温,如果超过30度,就发出中暑预警提示 double currentTemperature = 36; if (currentTemperature >= 30){ System.out.println("天气炎热,注意防暑降温,当心中暑"); } } }
第二种:
package com.zhenkai.branch.ifexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class IfExplainTwo { public static void main(String[] args) { /*目标:掌握if分支第二种写法*/ //案例需求:如果成绩大于60分就通过这么考试,拿到这么课程学分 double score = 59.9; if (score >= 60){ System.out.println("恭喜您通过考试,成绩及格,得到该课程学分!"); }else { System.out.println("很抱歉,您的分数不及格,请留意下学期补考时间,假期好好复习!"); } } }
第三种:
package com.zhenkai.branch.ifexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class IfExplainThree { public static void main(String[] args) { /*目标:掌握if分支第三种写法*/ //学校根据分数评优,0~60 D;60~70 C;70~90 B;90~100 A double score = -85; if (score >= 0 && score < 60){ System.out.println("D"); }else if (score >= 60 && score < 70){ System.out.println("C"); }else if (score >= 70 && score < 90){ System.out.println("B"); }else if (score >= 90 && score <= 100){ System.out.println("A"); }else { System.out.println("您输入的分数有误,只能是0 ~ 100之间,请确认!"); } } }
1.3 if分支注意事项
1.if()后一定不能加;
2.if(){}里如果只有一行代码,{}可以省略,但是建议写上
2.Switch分支
是通过比较值来决定执行哪条分支
2.1 Switch分支格式写法
Switch(表达式){ case 值1: 执行代码; break; case 值2: 执行代码; break; ... case 值n: 执行代码; break; default: 执行代码; }
2.2 Switch分支执行流程
第一步:先执行表达式的值,再拿这个值与分支里case值进行匹配
第二步:与哪个分支的case值匹配成功,就执行哪个case块的代码,遇到break就跳出分支
第三步:如果全部case值都匹配结果位false,则执行defaule块的代码
2.3 Switch分支案例应用
package com.zhenkai.branch.switchexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class SwitchExplain { public static void main(String[] args) { /*目标:掌握Switch分支的执行流程*/ //案例需求:定义一个初始值,周一到周日,周一加10,周二加20…… int initialValue = 0; String dayOfWeek = "星期天"; switch (dayOfWeek) { case "星期一": initialValue += 10; System.out.println(initialValue); break; case "星期二": initialValue += 20; System.out.println(initialValue); break; case "星期三": initialValue += 30; System.out.println(initialValue); break; case "星期四": initialValue += 40; System.out.println(initialValue); break; case "星期五": initialValue += 50; System.out.println(initialValue); break; case "星期六": initialValue += 60; System.out.println(initialValue); break; case "星期天": initialValue += 70; System.out.println(initialValue); break; default: System.out.println("没有找到对应case值,请您检查是否输入有误!"); } } }
2.4 Switch分支和if分支选择
从功能上来讲,if的功能要远强于Switch,Switch可以做的if都能做,但是要根据不同情况选择对应的分支
当条件是一个一个的值做比较时,使用Switch分支更好
当条件是一个区间范围时,应使用if分支
2.5 Switch分支注意事项
1.表达式只支持byte、short、int、char、String、枚举,不支持double、float、long
2..case值不允许重复,且只能是字面量,不能是变量
3.正常使用Switch时,必须书写break,否则会出现穿透现象
4.当存在多个case分支代码相同时,可以把相同代码放到一个case中,其他case块都通过穿透性穿透该case块执行代码即可
穿透现象示例:
package com.zhenkai.branch.switchexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class SwitchExplainTwo { public static void main(String[] args) { /*目标:掌握Switch分支穿透现象*/ //案例需求:周一到周日,周一学Java,周二周三敲代码,周四刷算法题,周五学Java,周六周日总结笔记 String dayOfWeek = "星期二"; switch (dayOfWeek) { case "星期一", "星期五": System.out.println("学Java"); break; case "星期二": //匹配到星期二,没有遇到break,继续向下穿透 case "星期三": System.out.println("敲代码"); break; //遇到break,Switch语句结束 case "星期四": System.out.println("刷算法题"); break; case "星期六": break; case "星期天": System.out.println("总结"); break; default: System.out.println("没有找到对应case值,请您检查是否输入有误!"); } } }
二、循环结构
1. for循环
1.1 for循环格式
for(初始化语句;循环条件;迭代语句){ 循环体语句(需要重复执行的代码); }
执行流程图:
1.2 for循环执行流程讲解
package com.zhenkai.branch.forexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class ForExplain { public static void main(String[] args) { /*目标:掌握for循环的用法和执行流程讲解*/ //案例需求:打印5行HelloWorld for (int i = 0; i < 5; i++) { //初始化语句:int i = 0 循环条件:i < 5 迭代条件:i++ System.out.println("Hello World!"); /*执行流程: * stop1:i取值0 1 2 3 4 * stop2:判断当前i的值是否满足循环条件,如果是true,执行System.out.println("Hello World!"); * stop3:执行迭代语句i++,i加1,再次返回stop1,直到不满足循环条件,结束循环*/ } } }
总结:
初始化语句:一般是定义一个变量,并给初始值
循环条件:一般是一个关系表达式,结果必须是true或者false
迭代语句:用于对条件进行控制,一般是自增或者自减
循环语句体:需要重复执行的代码for循环作用:减少代码重复编写,能灵活的控制程序的执行
快捷方式:在IDEA中,可以直接输入fori,按住Enter键
1.3 for循环案例
案例一:求1 ~ 100的和
package com.zhenkai.loop.forexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class ForDemoOne { public static void main(String[] args) { //案例:求1~100之间的和 int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } System.out.println("1到100的和是:" + sum); } }
案例二:求1~100之间的偶数和
package com.zhenkai.loop.forexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class ForDemoTwo { public static void main(String[] args) { //案例需求:求1~100之间的偶数和 int sum = 0; //方法一 for (int i = 0; i <= 100; i += 2) { sum += i; } System.out.println("1到100之间的偶数和是:" + sum); /*方法二 * for(int i = 1;i <= 100;i++){ * if(i % 2 == 0){ * sum += i; * } * } System.out.println("1到100之间的偶数和是:" + sum); */ } }
2. while 循环
2.1 while循环格式
初始化语句; while(循环条件){ 循环体语句(需要重复执行的代码); 迭代语句; }
2.2 while循环流程讲解
package com.zhenkai.loop.whileexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class WhileExplain { public static void main(String[] args) { /*目标:掌握while循环的执行流程*/ //同样以打印5行Hello World举例 int i = 1; //初始化语句 while (i <= 5){ //循环条件 System.out.println("Hello World!"); //循环体语句 i++; //迭代语句 /*执行流程讲解: * stop1:i取到初始化值1 * stop2:进入循环条件进行判断,如果为true,就执行循环体语句 * stop3:接着继续执行迭代语句,实现i加1,再次返回stop2,直到不满足循环条件,结束循环*/ } } }
2.3 while循环案例
案例一:世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大的它的厚度是0.1毫米。请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度?
package com.zhenkai.loop.whileexplain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class WhileDemoOne { public static void main(String[] args) { //需求:世界最高山峰珠穆朗玛峰高度是:8848.86米=8848860毫米,假如我有一张足够大的它的厚度是0.1毫米。 //请问:该纸张折叠多少次,可以折成珠穆朗玛峰的高度? /*think:stop1 定义纸张厚度和山峰高度(double类型),定义int类型次数 注意要统一单位 * stop2 使用while循环,循环条件是纸张厚度 < 山峰高度 循环体语句是纸张厚度每次乘2,迭代语句是次数++ * stop3 结束循环,输出结果*/ int count = 0; double paperThickness = 0.1,mountainHeight = 8848860; while (paperThickness < mountainHeight){ paperThickness *= 2; count++; } System.out.println("最终的纸张厚度是:" + paperThickness + "毫米"); System.out.println("共计折叠" + count + "次"); } }
2.4 for循环和while循环的选择
for循环和while循环有什么区别?在什么情况使用for或while?
for循环和while循环从功能上来讲完全一样。
在知道循环次数时,用for循环;在不知道循环此时时,用while循环
3.do-while循环
3.1 do-while循环格式
初始化语句; do{ 循环体语句; 迭代语句; }while(循环条件);
执行流程图:
do -while 的特点:先执行后判断
3.2 do -while循环流程讲解
package com.zhenkai.loop.dowhile_explain; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class DoWhileExplain { public static void main(String[] args) { /*目标:掌握do -while的执行流程和特点*/ //案例:同样以打印5行Hello World为例 int i = 1; //初始化语句 do { System.out.println("Hello World!"); //循环体语句 i++; //迭代语句 }while (i <= 5); //判断条件 /*执行流程讲解: * stop1:初始化语句 i取值1 * stop2:开始执行循环体语句 * stop3:接着继续执行迭代语句,i自身加1得到新值 * stop4:接下来执行判断条件,如果是true,就返回stop2,直到不满足循环条件,结束循环*/ } }
3.3 for循环、while循环、do -while循环总结
for循环、while循环都是先判断后执行;do -while循环是先执行后判断
for循环中控制循环的变量只在循环中使用
while循环中,控制循环的变量在循环后还可以继续使用
4.死循环
死循环是可一直执行下去的循环,没有干预不会停止
4.1 死循环的三种写法
//for 死循环 for(;;){ 循环体语句; } // while 死循环 while(){ 循环体语句; } //do -while 死循环 do{ 循环体语句; }while(true);
最推荐whil死循环的写法
4.2 死循环的应用
常见的用于服务器程序
5. 循环嵌套和跳转关键字(break continue)
什么是循环嵌套?
就是循环中包含循环
5.1 循环嵌套案例
案例一:打印5行4列 *
package com.zhenkai.loop.nested; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class LoopNestedDemo { public static void main(String[] args) { /*目标:掌握循环嵌套*/ //案例:打印5行4列 * for (int i = 1; i <= 5; i++) { //创建外部循环,用来控制打印行数 for (int j = 1; j <= 4; j++) { //创建内部循环,用来控制打印列数 System.out.print(" * "); } System.out.println(); //内部循环执行完一次,控制换行 } } }
5.2 跳转关键字break continue
break:跳出并结束当前行所在循环,就是直接结束本轮循环,只用于结束循环或结束Switch分支的执行
案例:打印5行Hello World为例,在打印到第3行的时候结束循环
package com.zhenkai.loop.nested; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class LoopNestedBreakDemo { public static void main(String[] args) { /*目标:掌握break在循环中的使用*/ //案例:同样以打印5行Hello World为例,在打印到第3行的时候结束循环 for (int i = 1; i <= 5; i++) { System.out.println("Hello World" + i); if (i == 3){ break; } } } }
continue:跳出当前循环的当次执行,直接进入下一次执行,就是结束一次循环,进入下一轮循环,只能在循环中使用
案例:打印5行Hello World为例,在打印到第3行的时候结束当次循环,但是除过第三个,其他任需打印
package com.zhenkai.loop.nested; /** * @author ZhenKai * @version 1.0.0 * @since 2025-04-03 */ public class LoopNestedContinueDemo { public static void main(String[] args) { /*目标:掌握continue在循环中的应用*/ //案例:打印5行Hello World为例,在打印到第3行的时候结束当次循环,但是除过第三个,其他任需打印 for (int i = 1; i <= 5; i++) { if (i == 3){ continue; } System.out.println("Hello World" + i); } } }
结束语
今天的内容总结完毕,很多代码可能注释看不清,我会将所有的代码、图片、流程图、思维导图都上传,有需要的伙伴可以自行下载。另为如果你在浏览过程中如果发现错误,包括错别字、错误代码等都可以评论或私信我,我将及时改正,并非常感谢你的指正。如果有什么不太懂的地方,都可以私信我,谢谢。