流程控制语句结构
流程控制语句结构
顺序结构
同一个方法中,从上往下,顺序执行
分支结构
条件判断
1、单分支条件判断
语法:
if(条件表达式){ 当条件表达式为true时,要执行的语句块 }
(1)如果条件成立,就执行语句块,如果条件不成立,就不执行语句块
(2){}可以省略,默认只带一句,建议不要省略
2、双分支分支条件判断
语法:
if(条件表达式){ 当条件表达式为true时,要执行的语句块1 }else{ 当条件表达式为false时,要执行的语句块2 }
(1)如果条件成立,就执行语句块1,如果条件不成立,就执行语句块2
(2){}可以省略,默认只带一句,建议不要省略
(3)else不可以单独存在的,必须有if配对
3、多分支条件判断
语法:
if(条件表达式1){ 当条件表达式1为true时,要执行的语句块1 }else if(条件表达式2){ 当条件表达式2为true时,要执行的语句块2 }else if(条件表达式3){ 当条件表达式3为true时,要执行的语句块3 } ..... else{ 当以上所有条件表达式都不成立时,要执行的语句块n+1 }
(1)如果条件表达式1成立,执行语句块1,如果条件表达式1不成立才会去判断条件表达2,如果条件表达式2成立,那么执行语句块2,如果条件表达式2不成立,才会去看条件表达式3,依次类推。只有一个分支会被执行
(2){}可以省略,默认只带一句,建议不要省略
(3)else不可以单独存在的,必须有if配对
(4)多个条件表达式的范围
1.互斥,没有交集,例如:
if(age>=0 && age<18){ System.out.println("未成年"); }else if(age >=18 && age<60){ System.out.println("成年"); }
//顺序可以互换
2.包含,例如:
if(age<18){ System.out.println("未成年"); }else if(age<60){ System.out.println("成年"); }
//两个条件具有包含关系
//顺序不可以调整,范围小的在上面,范围大的在下面
4.嵌套
在任意一个语句块中,都还可以嵌套任意一种分支结构
当外部的条件成立的情况下,才会进行内部的条件判断,例如:
if(条件表达式1){ if(条件表达式2){ 当条件表达式1成立,并且条件表达式2也成立时执行 }else if(条件表达式3){ 当条件表达式1成立,并且条件表达式2不成立,条件表达式3成立时执行 }else{ 当条件表达式1成立,并且条件表达式2不成立,条件表达式3不成立时执行 } }else{ if(条件表达式4){ 当条件表达式1不成立,条件表达式4成立,执行 }else if(条件表达式5){ 当条件表达式1不成立,条件表达式4不成立,条件表达式5成立,执行 }else{ 当条件表达式1不成立,条件表达式4不成立,条件表达式5也不成立,执行 } }
选择结构
语法结构:
switch(表达式){ case 常量值: 语句块; 【break;】 case 常量值: 语句块; 【break;] .... 【 default: 语句块; 【break;】 】 }
表达式类型要求:
基本数据类型:byte,short,char,int
引用数据类型:枚举(JDK1.5之后),String(JDK1.7之后)
执行过程:
入口: (1)当与某个case匹配 (2)当与所有case都不匹配,如果有default,从default进入 出口: (1)switch结束的} (2)break;
其他要求:
(1)case后面必须是常量或常量表达式
(2)所有case后面的值必须不相同
(3)case后面常量值的类型与表达式的类型要一致
条件判断与选择结构的取舍
(1)凡是可以使用switch...case一定可以用if..else代替,凡是反过来不一定
(2)当所有的条件判断是“常量的等值判断”,那么建议使用switch...case,可读性更好,效率更高
循环结构
for循环
语法结构:
for(初始化表达式①; 循环条件②; 迭代表达式④){ 循环体语句(要重复的代码)③ }
执行的过程
(1)初始化表达式①
(2)循环条件的判断②
(3)如果条件成立,执行循环体语句③一次
(4)迭代表达式④
(5)回到(2),直到循环条件不成立,结束for循环
注意:
(1)for(;;)中两个分号不可以省略,但是表达式可以省略
(2)适用于起始条件和终止条件明确,循环次数比较明显的情况
while循环
语法结构:
while(循环条件){ 循环体语句; }
执行过程:
(1)循环条件判断
(2)如果条件成立,执行循环体语句一次
(3)回到(1),直到循环条件不成立,结束while循环
注意:
(1)循环条件明显,次数不明显
(2)经常这样使用while(true) 和 break 结合
do while循环
语法结构:
do{ 循环体语句; }while(循环条件);
执行过程:
(1)先执行一次循环体语句
(2)再判断循环条件,是否继续下一次
(3)如果循环条件成立,执行下一次循环体语句
(4)回到(2),直到循环条件不成立,结束do..while
注意:
(1)和while的最大区别,至少执行一次
foreach(增强for循环)
Java独有的循环结构,底层原理依然是for循环
语法结构:
for(元素类型 元素名称 : 遍历数组(集合)(或者能进行迭代的)){ }
当我们循环集合时采用foreach效率会有所提高,当我们循环数组时,二者效率相差不多,为方便删除数组元素,可以使用标准的for循环
嵌套
(1)无论哪种循环,循环中都可以嵌套任一种循环结构
执行过程:
外循环循环一次,内循环循环一轮
作用:重复执行某些代码
跳转、中断
1、break
可以适用于switch和循环,默认表示结束当层循环或switch
break 标签;表示结束指定的循环
out_label:for(int i = 1; i<=5; i++){ inner_label:while(true){ System.out.println("请输入数字:"); int num = input.nextInt(); if(num>0){ positive ++; }else if(num<0){ negative++; }else{ //break;//结束的是while内层循环 break out_label; //break inner_label; } } }
2.continue
只能用于循环,表示提前结束当层本次循环,进入下一次循环
3.return
表示结束当前方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具