?? ??? ??
class="java"> switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; }
?? ??? ??? ?
?? ??? ??? ?格式解释说明:
?? ??? ??? ??? ?switch:说明这是switch语句。
?? ??? ??? ??? ?表达式:可以是byte,short,int,char
?? ??? ??? ??? ??? ?JDK5以后可以是枚举
?? ??? ??? ??? ??? ?JDK7以后可以是字符串
?? ??? ??? ??? ?case:后面的值就是要和表达式进行比较的值
?? ??? ??? ??? ?break:表示程序到这里中断,跳出switch语句
?? ??? ??? ??? ?default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
?? ??? ??? ?switch语句的表达式可以是byte,不可以是long,JDK7以后可以是String.
?
?? ??? ??? ?A:首先计算表达式的值
?? ??? ??? ?B:和每一个case进行匹配,如果有就执行对应的语句体,看到break就结束。
?? ??? ??? ?C:如果没有匹配,就执行default的语句体n+1。
?? ??? ??? ?A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
?? ??? ??? ?B:default可以省略吗?
?? ??? ??? ??? ?可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
?? ??? ??? ??? ?特殊情况:
?? ??? ??? ??? ??? ?case就可以把值固定。
?? ??? ??? ??? ??? ?A,B,C,D
?? ??? ??? ?C:break可以省略吗?
?? ??? ??? ??? ?可以省略,但是结果可能不是我们想要的。
?? ??? ??? ??? ?会出现一个现象:case穿透。
?? ??? ??? ??? ?最终我们建议不要省略
?? ??? ??? ?D:default一定要在最后吗?
?? ??? ??? ??? ?不是,可以在任意位置。但是建议在最后。
?? ??? ??? ?E:switch语句的结束条件
?? ??? ??? ??? ?a:遇到break就结束了
?? ??? ??? ??? ?b:执行到末尾就结束了
?? ??? ??? ?A:if
?? ??? ??? ??? ?针对boolean类型的判断
?? ??? ??? ??? ?针对一个范围的判断
?? ??? ??? ??? ?针对几个常量的判断
?? ??? ??? ?B:switch
?? ??? ??? ??? ?针对几个常量的判断
?????????? for,while,do...while
?? ??? ??? ??? ?for(初始化语句;判断条件语句;控制条件语句){
?? ??? ??? ??? ??? ?循环体语句;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?a:执行初始化语句
?? ??? ??? ??? ??? ?b:执行判断条件语句
?? ??? ??? ??? ??? ??? ?如果这里是true,就继续
?? ??? ??? ??? ??? ??? ?如果这里是false,循环就结束
?? ??? ??? ??? ??? ?c:执行循环体语句
?? ??? ??? ??? ??? ?d:执行控制条件语句
?? ??? ??? ??? ??? ?e:回到b
?? ??? ??? ??? ?a:判断条件语句无论简单还是复杂,结果是boolean类型
?? ??? ??? ??? ?b:循环体语句如果是一条,可以省略大括号,但是不建议
?? ??? ??? ??? ?c:有分号就没有左大括号,有左大括号就没有分号
?? ??? ??? ??? ?while(判断条件语句) {
?? ??? ??? ??? ??? ?循环体语句;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ??? ?初始化语句;
?? ??? ??? ??? ?while(判断条件语句){
?? ??? ??? ??? ??? ?循环体语句;
?? ??? ??? ??? ??? ?控制条件语句;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ??? ?通过查看这个格式,我们就知道while循环可以和for循环等价转换。
?? ??? ??? ??? ?a:使用上的区别
?? ??? ??? ??? ??? ?for语句的那个控制条件变量,在循环结束后不能在使用了。
?? ??? ??? ??? ??? ?而while的可以继续使用。
?? ??? ??? ??? ?b:理解上的区别
?? ??? ??? ??? ??? ?for适合于一个范围的判断
?? ??? ??? ??? ??? ?while适合次数不明确的
?? ??? ??? ??? ??? ??? ?举例:吃葡萄
?? ??? ??? ??? ?do {
?? ??? ??? ??? ??? ?循环体语句;
?? ??? ??? ??? ?}while(判断条件语句);
?? ??? ??? ??? ?
?? ??? ??? ??? ?扩展格式:
?? ??? ??? ??? ?初始化语句;
?? ??? ??? ??? ?do {
?? ??? ??? ??? ??? ?循环体语句;
?? ??? ??? ??? ??? ?控制条件语句;
?? ??? ??? ??? ?}while(判断条件语句);
?? ??? ??? ??? ?
?? ??? ??? ??? ?通过查看格式,我们就可以看出其实三种循环的格式可以是统一的。
?? ??? ??? ??? ?a:do...while循环至少执行一次循环体
?? ??? ??? ??? ?b:for和while必须先判断条件是否是true,然后后才能决定是否执行循环体
?? ??? ??? ?A:一定要注意修改控制条件,否则容易出现死循环。
?? ??? ??? ?B:最简单的死循环格式
?? ??? ??? ??? ?a:while(true){...}
?? ??? ??? ??? ?
?? ??? ??? ??? ?b:for(;;){}
?? ??? ??? ??? ?
?
?? ???? A:用在循环和switch语句中,离开此应用场景无意义。
?? ??? ?B:作用
?? ??? ??? ?a:跳出单层循环
?? ??? ??? ?b:跳出多层循环,需要标签语句的配合
?? ???? 用在循环中,离开此应用场景无意义。
?? ???? 作用
?? ??? ??? ?a:跳出单层循环的一次,可以继续下一次
???????? 返回类型
?? ??? ?A:用于结束方法的,后面还会在继续讲解和使用。
?? ??? ?B:一旦遇到return,程序就不会在继续往后执行。