1. 条件执行
1.1 if
if(布尔表达式1){
代码块1
}else if(布尔表达式2){// 可缺省
代码块2
}else{// 可缺省
代码块
}
布尔表达式,可以是比较运算或关系运算的结果,也可以是布尔变量或布尔值。
当布尔表达式为true时,执行其后的代码块,false则继续相下执行,知道遇到else(如果缺省else,则不执行任何语句)。
注意事项
- if后如果只有一条语句,是可以省略大括号的,但是强烈不建议这样做。
- 多条件执行时,程序会从上到下依次判断布尔表达式的值,直到遇到true或者执行到else块,所以条件的范围应该从小到大。
1.2 switch
当处理有很多条件分支的时候,switch语句可能时一个好的选择。
switch(表达式){
case 值1:
代码1;
break;// 可缺省,缺省的情况下,执行完代码1,会继续相下执行代码2。
case 值2:
代码2;
break;
...
case 值n:
代码n;
break;
default:// 可缺省,当表达式没有匹配到值时,执行default下的语句。
代码n+1;
}
注意事项
- 表达式值的类型只能是:byte、short、int、char、Enum、String。
- 程序会先找到表达式匹配的值,然后执行其后的代码,执行到break;时,会跳出switch语句。
- 当break缺省时,代码会继续向下执行,直到break或执行完default语句。
// 运用这个规则,我们可以做一些是事情,比如当多种情况需要执行相同的语句时。
switch(表达式){
case 'a':
case 'b':
case 'c':
System.out.println("print a-c");
break;
case 'd':
System.out.println("print d");
break;
default:
System.out.println("print default");
}
- 编程时可以开启IDE的提示功能,当缺省break或default时,会提醒你。
2. 循环
2.1 while
while(条件语句){
循环体
}
注意事项
- while循环可能执行0到n次,只要条件语句为true就会执行循环体的代码。
- 当循环体中只有一行代码时,可以省略大括号,强烈不建议省略大括号。
2.2 do...while
do{
循环体
}while(条件语句)
注意事项
- do...while循环执行1到n次,至少会执行一次。
- 注意条件语句的边界值。
2.3 for
for(初始化语句; 条件语句; 步进操作){
循环体
}
while和do...while语句适合不清楚循环次数的情况。
for循环适合清楚循环次数的情况。
注意事项
- for循环的执行顺序是,初始化语句->条件语句->(true)循环体->进步操作->条件语句...直到条件语句(false)跳出。
- 初始化语句、条件语句和步进操作都是可以缺省的。
for(;;){
这是一个死循环
}
2.4 foreach
for(元素类型 变量名: 遍历对象){
循环体
}
foreach适用于不需要使用索引变量的遍历。
注意事项
- foreach保证会遍历集合中的所有元素,但是不保证遍历的顺序。
- foreach无法获取到索引变量。
- 底层使用Iterator来实现遍历。
2.5 循环控制
2.5.1 break
while(true){
if(条件语句){
break;
}
}
注意事项
- break会跳出当前的循环(如果多层循环嵌套则跳出break所在的循环)。
- 通常与条件判断语句一起使用。
2.5.2 continue
continue也可以用来控制循环,不过不会跳出循环,而是进入下一次循环。