流程控制语句
顺序结构:从上往下,依次执行运算
选择结构:按照不同的选择,执行不同的代码
循环结构:根据条件重复做一些代码
if 判断(三种)
if(条件表达式){
执行语句;
}
if(条件表达式){
执行语句;
}
else{//否则
执行语句;
}
if(条件表达式){
执行语句;
}
else if (条件表达式){
执行语句;
}
……
else{
执行语句;
}
注意点:
1、关系表达式不论简单与否,结果都是 boolean 类型
2、if 语句的语句体如果是一条语句(并不代表是一行)时,可省略大括号
3、else 后如果没有 if 的话,是不需要写关系表达式的
4、所有的三目表达式都可以用 if 语句的第二种形式来实现,反之不成立
5、格式一适合单一判断,格式二适合两个判断,格式三适合多个判断
6、一般情况下,有左大括后就没有分号,有分号就没有左大括号
switch 判断
表达式可以是 byte,short,int,char,枚举,字符串
JDK5 以后可以使用枚举
JDK7 以后可以使用字符串
case:后面的值就是要和表达式进行比较的值,数据类型要和表达式的结果值类型一致
default:所有其他情况都不匹配的情况下执行
switch(表达式){
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
注意点:
case 后面只能是常量,不能是变量,而且多个 case 后面的值不能出现相同的值
default 可以省略,建议不省略(已做提示)
break 可以省略,但是结果有可能不是我们想要的结果,根据不同业务逻辑选择是否省略
default 可以放在任意位置,建议放在最后
switch 的结束条件:
1、遇到 break;
2、自然的执行到 switch 语句末尾
if 和 switch 的应用
if:
1、对具体的值进行判断
2、对区间判断
3、对运算结果是 boolean 类型的表达式进行判断
switch:
1、对具体的值进行判断
2、值的个数通常是固定的
对于几个固定的值判断,建议使用 switch 语句,因为 switch 语句会将具体的答案都加载进内存,效率相对高一点
while 循环
while(条件表达式){
执行语句;
}
do while 循环
do{
执行语句;
}while(条件表达式);
特点:无论条件是否满足,循环体至少执行一次
for 循环
for(初始化表达式;循环条件表达式;循环后的操作表达式){
执行语句;(循环体)
}
注意点:
1、判断条件语句无论简单与否,结果都是boolean类型
2、循环体语句如果只有一条,可以省略大括号,但是强烈不建议省略
3、有分号就没有左大括号,有左大括号就没有分号
增强 for 循环
内在还是用的迭代器,替代迭代器
格式:
for(元素数据类型 元素变量 : 数组或集合){
使用元素变量
}
for 和 while 的特点
1、for 和 while 可以互换
2、格式上的不同,在使用上有点小区别
如果需要通过变量来对循环进行控制,该变量只作为循环增量存在时,区别就体现出来了
使用上的区别:
1、for 语句的控制条件变量,在循环结束后不能再使用
2、while 语句的控制条件变量,在循环结束后还可以再使用
理解上的区别:
1、for 适合一个范围的判断
2、while 适合次数不明确的判断
三种循环的注意事项
do while 至少执行一次循环体
for 和 while 必须先判断条件是否为 true,然后才决定是否执行循环体语句
循环使用的注意点:
一定要注意修改控制条件,否则容易死循环
最简单的死循环:
for( ; ; ){}
while(ture){}
for 循环嵌套注意点:
在嵌套 for 循环中,将循环次数多的循环放在内侧,循环次数少的循环放在外侧,其性能会提高;
减少循环体中变量的定义和赋值(实例化),其性能也会提高
for 循环一般嵌套2层,最多三层,不要嵌套多层,会是自己思维混乱
break:跳出、中断
作用的范围:要么是 switch 语句,要么是循环语句
跳出单层循环
跳出多层循环,需要标签语句的配合(不常用)
例如:
//跳出单层循环
for (int x = 0; x < 10 ; x++){
if (x == 5){
break;
}
System.out.println("x= "+x);
}
//for循环嵌套
for (int x = 0; x < 3; x++ ){
for (int y = 0; y < 4; y++){
if (y == 2){
//仅仅跳出内层循环
break;
}
System.out.println("y = "+ y);
}
System.out.println("x= "+x);
}
wc:for (int x = 0; x < 3; x++ ){
nc:for (int y = 0; y < 4; y++){
if (y == 2){
//跳出外层循环
break wc;
}
System.out.println("y = "+ y);
}
System.out.println("x= "+x);
}
continue:继续
可用在循环中
跳出单层循环的一次,还有下一次的循环
例如:
for(int i=0;i<10;i++){
if(i==4){
continue;
}
System.out.println("i:"+i);
}
i:0
i:1
i:2
i:3
i:5
i:6
i:7
i:8
i:9
return:返回
用于结束方法和返回方法指定的值
一旦遇到 return,大多数情况(try catch finally)就不会继续往后执行
例如:
for(int i=0;i<10;i++){
if(i==4){
return;
}
System.out.println("i:"+i);
}
System.out.println("over");
i:0
i:1
i:2
i:3