java基础-流程控制-分支结构(switch-case)
java中的流程控制
1.程序必须在执行过程中控制它的世界,并作出选择。在java中,需要使用执行控制语句来作出选择。
2.java使用了C的所有流程控制语句,它们包括:分支结构语句(if-else,switch-case),循环结构语句(while,do-while,for,foreach,)。并且,在这些语句中还涉及到许多关键字,包括:break,continue,return等等。
3.goto关键字是java中的保留字,java中并不会使用goto关键字,但是仍然可以进行类似goto那样的跳转(通过使用标签和break,continue等关键字),但比起典型的goto,有了很多限制。
switch-case分支结构语句
switch有时被规划为一种选择语句,证据整数表达式的值,switch可以从一系类代码中选出一段去执行。
格式:
switch(integral-selector){
case integral-value1:statement;break;
case integral-value2:statement;break;
case integral-value3:statement;break;
case integral-value4:statement;break;
case integral-value5:statement;break;
//...
default:statement;
}
integral-selector(整数选择因子)必须是int、short、char、byte和enum类型(JDK 1.7 之后,类型也可以是String了)是一个能产生整数值的表达式或String类型的变量,switch能将这个表达式的结果或变量与每个integral-value相比较,若发现相符的,就执行对应的语句(单一或多条),若没有发现相符的,就执行default(默认)语句。
***每个case后面均以一个break结尾,这样可以使执行流程跳转至switch主体的末尾,这是构建switch语句的一种传统方式。但break是可选的,若省略break,会继续执行后面的case语句,直到遇到一个break为止。当所有case均没有break的时候,就会继续往下匹配,匹配不成功则返回默认的case,即default中的内容。
default语句可以存在于任何case之间,也可以在开头,但是default并没有break,也可以加上,但是没有任何实际用处。
以下是对其测试内容:
1.integral-selector若未匹配到任何integral-value,则执行默认的case,即只执行default中的内容,无论每个case中是否有写break,无论default case写在末尾还是开头;
输出:
2.integral-selector若匹配成功一个integral-value,若匹配成功的case没有写break时,从匹配成功的case开始,按顺序往下输出每一个case中的内容,直到其下面的任何一个case中有写入break时为止。 若其下面case中没有任何case写入了break,那就输出完。匹配成功的case上面的case有无写入break不影响结果。示例:
输出:
,若case4有写入break,则输出位2,3,4,验证:
输出为:
,若匹配成功的case有写入break,则只输出当前case中的内容,即只输出2,验证:
输出为:
验证integral-selector为字符串时的匹配,示例:
输出:
总结:
switch case执行时,一定会先进行匹配,匹配成功返回当前case的值,再根据是否有break,判断是否继续输出,或是跳出判断。
还需注意的是case后面只能是常量,可以是运算表达式,但一定要符合正确的类型。不能是变量,即便变量在之前进行了赋值,JVM依然会报错。