Java基本语法
switch-case结构
- 根据
switch
表达式中的值,依次匹配各个case
中的常量。一旦匹配成功,则执行相应case
中的执行语句。当执行完对应的执行语句后,则仍然向下继续执行剩余的其他case
中的执行语句(此时不需要匹配成功,无差别直接执行),直到遇到break
关键字,或该switch-case
结构结束为止。
由此可以这样理解switch-case
不是一个标准的分支结构,而是根据switch
表达式选择从哪节枝干开始往下运行。 break
关键字,可以使用在switch-case
结构中,表示跳出switch-case
结构。
并且break
关键字是可选的。switch
结构中的表达式所表示的值,只能是以下6种数据类型之一:byte
,short
,char
,int
,枚举
(JDK 5.0新增),String
(JDK 7.0新增),即在JDK5.0之前的switch
结构中的表达式所表示的值只能是前4种数据类型之一。- 'case'之后只能声明常量,不能声明变量或范围。
default
相当于if-else
结构中的else
,表示默认值。default
结构也是可选的,而且位置是灵活的,但不推荐改变位置,如果没有break
容易出错。
Switch-case习题
- 第一题:
说明:键盘无法直接获取字符类型,因此先获取字符串,再用String.charAt(int index)
方法转换为字符类型。 第二题:
说明:- 如果是关于要判断一个范围的问题,并且用
switch-case
结构,从缩少case
结构入手,通常就是通过整除,将问题范围缩小。 - 如果
switch-case
结构中的多个case
的执行语句相同,则可以进行省略合并。实际上逻辑并没有变,相当于有的case
的执行语句为不需要执行任何东西,然后也没有break
,因此就往下顺,直到一条执行语句或break
。
- 如果是关于要判断一个范围的问题,并且用
- 第三题:
第四题:
说明:- 找解题思路时,可以先代入具体的值,然后思考自己怎么解,再想用代码怎么实现。
break
是可选的。
- 第五题:
switch-case与if-else
- 凡是可以使用
switch-case
的结构,都可以转换为if-else
。反之,不成立。因为switch-case
表达式有限制,比如浮点型、布尔型都不能用。 - 在使用分支结构时,若情况既能使用
switch-case
又能使用if-else
,并且使用switch-case
取值情况并不多,优先选择使用switch-case
。因为switch-case
执行效率稍高。