一、顺序结构
从上倒下、从左到右依次运行
二、分支结构
2.1 判断结构
if(逻辑值){
//代码块;
}
如果代码块只有一句,{}可以省略不写, 但是最好写上,增加可读性。
if(逻辑值){
//Code1;
} else {
//Code2;
}
if(逻辑值1){
//Code1;
} else if(逻辑值2) {
//Code2;
} else {
//Code3;
}
执行顺序:
先执行逻辑值1,
如果逻辑值1为true,则执行代码快1.
接着执行逻辑值2,如果逻辑值2为true,
则执行代码快2,以此类推。
2.2 选择结构
switch(表达式){
case 情况1 : Code1;break;
case 情况2 : Code2;break;
……
default:Code;break;
}
注意:
1.表达式的结果是byte/short/int/char
2.从JDK1.7开始,允许匹配字符串
3.从JDK1.5开始,允许匹配枚举常量
4.当选项后边都有break的时候,选项之间的顺序没有影响;如果有一个或者以上选项之后没有break,选项之间的顺序就会有影响。
5.在switch中,只有遇到break或者执行到switch语句的末尾才会结束。
面试问题(坑):
int i = 0;
switch(i){
case 0: int j = 0; //在此处定义的j,局部变量。生命周期只在switch语句中有效
case 1: j+=1;
case 2: j+= 2;
case 3:j+=3;
default:j+=4;
}
System.out.printlnt(j); //编译错误,变量没有定义
//出了switch语句,j已经失效了。会报未定义错误
如果判断的是一个范围的时候,建议使用if else if语句; |
如果情况相对比较固定的时候,建议使用switch语句。 |
三、 循环结构
while(逻辑值){
//Code;
}
循环的要素:
1、定义循环变量、
2、控制判断条件、
3、改变循环变量
do{
//Code;
} while(逻辑值); // (分号一定不能少)
do-while循环的代码块至少执行一次
for(定义循环变量; 控制判断条件; 改变循环变量){
//代码块;
}
当循环的次数固定或者步长固定建议使用for循环 |
当循环次数不定或者变化不规律的时候建议使用while |
for循环更省内存,因为执行完for循环之后,循环变量的内存就会被释放。在实际使用中,while循环和for循环是交叉使用的。
四、break和continue
break:用于选择或者循环语句中,表示结束当前一层语句
continue:用于循环语句中,表示跳出当前循环继续下次循环
这两个关键字必须结合相应的语句使用,单独存在没有意义,因此单独存在的时候编译报错
循环支持标号形式。当需要一次性跳出多层循环的时候,可以使用标号形式(代替了goto的作用)。但是不推荐,不常用。降低了程序的阅读性。标号:可能在面试的笔试中出现。
例:
Outer:for(int i = 0; i < 6; i++){
Inner:for(int j = 0; j < 5; j++){
if(j == 3){
break Outer;
}
}
}
//直接跳出了外层循环。