04 流程控制语句

674 阅读5分钟

01 分支结构

当需要进行条件判断并做出选择时,需要使用分支结构

02 if分支结构

语法格式:if(条件表达式){

​ 语句块;

}

执行流程是:判断条件表达式是否成立,若成立,则执行对应的语句块;若不成立,则跳过语句块,执行后面的语句

03 if else分支结构

语法格式:if(条件表达式){

​ 语句块1;

}else{

​ 语句块2;

}

执行流程:判断条件表达式是否成立,若成立,则执行语句块1;若不成立,则执行语句块2

04 if else if else分支结构

语法格式:if(条件表达式1){

​ 语句块1;

}else if(条件表达式2){

​ 语句块2;

}else{

​ 语句块n;

}

执行流程:判断条件表达式1是否成立,若成立,执行语句块1;若不成立,则转而去判断条件表达式2是否成立,如果成立,就执行语句块2;最后如果条件表达式1和2都不成立,则执行语句块n

05 switch case分支结构

语法格式:switch(变量/表达式){

​ case 字面值1:语句块1; break;

​ case 字面值2:语句块2; break;

​ ........

​ default:语句块n;

}

执行流程:计算变量或者表达式的值,依次从上往下比较case中的字面值,如匹配,则执行对面的语句块,同时再执行break跳出当前结构,如果没有一个字面值匹配,就执行default后面的语句块n

switch()中支持的数据类型有byte、short、char以及int类型,从JDK 1.5开始支持枚举类型,从JDK 1.7开始支持String类型

注意:每个case后面的break语句不建议省略,一旦省略,只要当前case中的字面值匹配上了,就会执行当前对应语句块以及下面所有的case的语句块,不论后面case中的字面值是否匹配,都会执行,这种现象称为"case穿透"

06 循环结构

Java中如果想重复执行一段代码时,就需要使用循环结构。

任何复杂的逻辑都可以通过顺序、分支、循环三种结构实现

07 for循环

语法格式:for(初始化表达式;条件表达式;修改初始值表达式){

​ 循环体;

}

执行流程:执行初始化表达式,再判断条件表达式是否成立,成立则执行循环体,再修改初始值表达式,再判断条件是否成立,如此循环;如果一开始就不成立,就循环结束,执行后面的语句

08 continue以及break关键字

continue语句用在循环体中,用于结束本次循环而开始下一轮循环

break用于退出当前语句块;break用在循环体中用于退出当前循环

for(;;)这种称为无限循环或者死循环

09 双重for循环

语法格式:for(初始化表达式1;条件表达式2;修改初始值表达式3){

​ for(初始化表达式4;条件表达式5;修改初始值表达式6){

​ 循环体;

​ }

}

执行流程:执行表达式1 ——》判断表达式2是否成立

​ ——》若成立,则执行表达式4——》判断表达式5是否成立

​ ——》若成立,执行循环体——》执行表达式6——》判断表达式5是否成立

​ ——》不成立,内层循环结束——》表达式3——》判断表达式2是否成立

​ ——》若不成立,则外层循环结束

对于双重for循环来说,外层循环注意控制打印行数,而内层循环控制打印列数,外层循环改一下,内层循环从头到尾跑一圈

在实际开发中双重for循环主要应用在打印多行多列的场景中,但是需要注意的是多重循环不推荐嵌套太多层,否则程序的效率会降低,一般最多是三重循环,最常用的是双重循环

10 break关键字跳出多层循环

在嵌套的循环结构中,break用于退出所在循环体

要想退出多层循环体,需要标号的方式,具体标号方式如下

outer:for(){
		for(){
            break outer;//直接退出两层循环,而不仅仅是所在循环体
		
		}
}

11 while循环

语法格式:while(条件表达式){

​ 循环体;

}

执行流程:判断条件表达式是否成立,若成立,则执行循环体,之后再判断条件表达式是否成立,如此循环;若不成立,直接循环结束

12 while循环和for循环的比较

while循环和for循环完全可以互换,但更推荐是使用for循环

while循环适合有明确的循环条件但没有明确的循环次数的场合

for循环适合有明确的循环次数或范围的场合

while(true)和for(;;)都是无限循环

13 do while循环

语法格式:do{

​ 循环体;

​ }while(条件表达式);

执行流程:先执行循环体,再判断条件表达式是否成立,若成立,则继续执行循环体,如此循环;若不成立,则直接结束循环

do while循环适用于至少执行一次循环体的场合

14 循环的笔试考点

下面代码是否会出错?

int i=1;
while(i<10);{
    i++;
}

答:上面代码会造成死循环,因为在while(i<10)后面是分号,意味着循环体是空语句,这就会造成条件表达式中i的值一直不变(一直为1),从而条件表达式会永远成立,造成死循环。