1.if选择结构:解决有一种情况的问题
语法:
if(条件){
代码块;
}
执行流程:
如果条件为true,就执行代码块及if结构以后的语句;如果条件为false,就不执行代码块而直接执行if结构之后的语句。
2.if-else结构:解决有两种情况,这两种情况无论如何都要执行其中一种
语法:
if(条件){
代码块1;
}else {
代码块2;
}
执行流程:
如果条件为true,就执行代码块1再执行结构之后的语句;如果条件为false,就执行代码块2,再执行结构之后的语句。
3.多重if选择结构:解决有两种或两种以上情况的问题.
语法:
if(条件1){
代码块1;
}else if(条件2){
代码块2;
}else if(条件3){
代码块3;
}else{
代码块4;
}
执行流程:
先判断条件1,如果为true,就执行代码块1,如果为false,就继续判断下一个条件2;如果条件2为true,就执行代码块2,如果条件2为false,就继续判断下一个条件3;依次这样执行下去之后如果没有任何符合条件的语句就直接执行else块中代码块4,再执行结构之后的语句。
结构特点:
1.在多重if选择结构中,if块有且仅有一个,else if块可以0个到多个,else可以有0个到1个.
2.多重if选择结构中,最多执行一种情况,最少一种情况都不执行.
3.如果用多重if选择结构解决多种情况范围判断问题时,各种分支之间不一定可以互换位置.
4.switch结构:解决多种情况的等值判断问题.
语法:
switch(表达式){
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
...
default:
代码块;
break;
}
执行流程:
先判断表达式的值,如果表达式的值等于case后面某一个常量值,就执行完代码块2,遇到break或者是结尾的大括号就跳出switch结构,执行之后的语句;如果表达式的值不等于任何一个case后面的常量 ,就执行default中代码,执行完default代码块,遇到break或者是结尾的大括号就跳出switch结构,执行之后的语句。
结构特点:
1.switch结构中表达式结果的类型,在java7之前支持byte、short、int、char、enum(枚举);java7之后可以是String.
2.switch结构中,case块可以有0个到多个,default有且仅有0个到1个.
3.switch结构中,case块之间可以互换位置,不影响结果.default块也可以放在switch结构中任意位置.
4.在同一个switch结构中,case后面常量值不可以相同,否则报错.
5.一般情况下,switch结构中不能省略break,如果省略break,语法不报错,但是switch结构只会判断一次,执行case块中代码,然后没有break,会继续执行,后面不会再判断,直到遇到遇到break或者是结尾的大括号就跳出switch结构,执行之后的语句.
6.switch结构中最少执行0个分支情况,最多全部执行.
5.多重if VS switch
相同点:
1.都可以解决多种情况的等值判断问题.
2.都是最少执行0种情况(分支).
不同点:
1.多重if既可以解决多种情况的范围判断问题,又可以解决多种情况等值判断问题;switch结构只能解决多种情况等值判断问题.
2.多重if结构最多只能执行一个分支情况;switch结构可以执行多个分支情况.
3.多重if结构的条件可以是任意表达式,只要表达式结果是boolean;switch结构中表达,在java7之前支持byte、short、int、char、enum(枚举);java7之后可以是String.
4.多重if结构中,各个分支之间不一定可以互换位置; switch结构中,在不省略break情况下,各个分支之间可以互换位置,不影响结果.
5.多重if结构中,执行完一个分支情况就跳出多重if结构中;switch结构中,只有遇到break或者结尾大括号,才能跳出switch结构.
6.一般解决多种情况等值判断问题,首选switch结构.