这是关于分支结构的知识点
分支结构
程序有三种基本结构,顺序结构,分支结构和循环结构。
1.1.1 if语句
if…else…
双路条件选择
语法:
if(条件表达式){
语句0
}else{
语句1
}
如果条件表达式判断为true,则执行语句0,否则执行语句1
if
单路条件选择
语法:
if(条件表达式){
语句
}
如果条件表达式判断为true,则执行语句,否则不执行
if…else if …else
多重条件选择
语法:
if(条件表达式1){
语句1
}else if(条件表达式2){
语句2
}else if(条件表达式){
语句3
}
…
else{
语句n
}
如果条件表达式1被满足,则执行语句1,然后跳出if语句,否则判断表达式2,2不满足则判断3.。。如果所有条件表达式都不满足,则执行else的语句n。
else{语句n} 可以被省略。
1.1.2 switch选择语句
语法如下:
switch(表达式){
case 常量表达式1:
语句序列1
break;
case 常量表达式2:
语句序列2
break;
…
case 常量表达式n:
语句序列n
break;
default:
语句序列n+1
}
先计算表达式的值,这个表达式的值的类型和case中常量表达式的值类型必须一样,如果表达式的值和任何一个常量表达式值相同,则转入该case所属的序列语句执行,而 break 将会跳出switch循环。
同样的,如果都不匹配,则执行default的语句执行。同样的,default可以被省略。
如果你省略某个break,则虽然程序做出了判断,但是仍然会顺序执行下去,即使表达式值不匹配,break是分支判断程序的出口。
int age=5;
switch (age){
case 5: {
System.out.println("5");
age+=1;
}
case 333:{
System.out.println("222");
age+=1;
}
default:
System.out.println("0000");
age*=1000;
}
System.out.println(age);
程序结果如下
age初值为5,但是case 5和case 333都没有出口,结果为7,则证明程序经历了case 5和case 333,但是并没有执行default的语句。所以break一定要写。
case是程序的入口,程序需要检测到出口才会跳出,由于没有专门的出口,程序将持续执行,知道出现一个break或者执行到default前面。