选择结构
if
语法:
if(布尔表达式){ //布尔表达式返回结果为true or false //执行代码块 } //其他代码
处理流程:
- 1. 判断布尔表达的结果
- 2. 如果布尔结果为true,执行代码块的代码
- 3. 如果结果为false,跳过代码块,执行其他代码
if else
语法:
if(布尔表达式){ //代码块1 }else{ //代码块2 } //后续代码
处理流程:
- 1. 判断布尔表达式的结果
- 2. 如果为true,执行代码块1,不执行代码块2,执行后续代码
- 3. 如果为false,执行代码块2,不执行代码块1,执行后续代码
多重if
语法:
if(布尔表达式1){ //代码块1 }else if(布尔表达式2){ //代码块2 }else if(布尔表达式3){ //代码块3 }else{ //代码块4 } //执行后续代码
处理流程:
逐个判断布尔表达式
1. 如果布尔表达式1为true,执行代码块1,跳过其他的,执行后续代码
2. 如果布尔表达1为false,判断布尔表达式2,为true,执行代码块2,跳过其他的,执行后续代码
3. 如果布尔表达式2为false,判断布尔表达式3,为true,执行代码块3,跳过其他,执行后续代码
4. 如果表达式1,2,3都为false,执行代码块4,执行后续代码
注意顺序随意调整,因为布尔表达式2是依赖于布尔表达式1的结果的。
可以从大到小,或者从小到大按照顺序书写
嵌套if
语法:
if(外层布尔表达式){ if(内部布尔表达式){ //内层代码块1 }else{ //内层代码块2 } }else{ }
流程:
- 1. 判断外层表达式,当外层结果为true,则进入内层判断处理
- 2. 外层为false,内层直接被跳过
if的用途
做检查
int amount = 10000; if(amount<20000){ //错误处理 }
业务逻辑处理
boolean aliPayFlag = true; if(aliPayFlag){ //连接ali的服务,调用它的api完成业务的处理 }
分支结构
语法:
switch(参数||表达式){ case 值1: //代码块1 case 值2: //代码块2 default: //代码块3 兜底代码 }
流程:
使用参数去跟每个case中的值进行匹配,如果相等,则进入相应代码块执行
如果匹配到某个case语句,则默认会执行后续的所有代码,所以我们需要break,进行switch的跳出操作
用途:
System.out.println("请选择 1注册 2登录"); int op = input.nextInt(); switch(op){ case 1: //做注册的业务处理;break; case 2: //做登录的业务处理;break; default://兜底处理; break; }
循环结构
while循环
语法:
while(布尔表达式){ // 循环代码 } //后续代码
流程:
1. 如果布尔表达式为true,执行循环代码,然后进入下一次布尔表达式的判断
2. 如果布尔表达式仍然为true,继续执行循环代码,然后进入下一次布尔表达式的判断
3. 直到布尔表达式结果为false,则跳出while循环,执行后续代码
while的特点:
1. 有入口条件 ,就是布尔表达式
2. 先判断,为true才执行,否则一次都不会执行
3. 执行次数为0-n次
4. 适用于明确次数的场景
do while循环
语法:
do{ //循环代码 }while(布尔表达式);
流程:
- 1. do while循环,没有入口条件,先执行一次,然后去判断布尔表达式
- 2. 如果布尔表达式为true,继续下一次执行
- 3. 一直到布尔表达式为false,退出dowhile循环
应用场景:
- 首次没有入口条件,执行次数大于等于1次的,适用于不确定次数的场景
for循环
语法:
for(初始部分;循环条件;迭代部分){ //循环操作 }
流程:
- 1. 执行初始部分,(只执行一次)
- 2. 判断循环条件
- 3. 条件为true,执行循环操作
- 4. 条件为false,跳出for循环
- 5. 在3.的基础上,执行迭代部分,进入下一次循环条件的判断,一直执行循环条件为false的情况
流程控制
break:
在循环里面或者switch使用
在循环中使用,代表跳出整个循环,会执行循环外的代码
一般用在数据检查当中
continue:
- 在循环里使用,代表跳过当前这次循环,会执行下次循环
return:
- 不是流程控制,而是方法控制,当执行到return,直接结束方法