switch是Java提供的另一个条件判断陈述式,它只能比较数值或字节,不过别以为这样它就比if
来得没用,使用适当的话,它可比if判断式来得有效率;switch的语法架构如下: switch(变量名称或运算式) {
case 符合数字或字节: 陈述句一; break; case 符合数字或字节: 陈述句二; break; default: 陈述三; } 首先看看switch的括号,当中置放您想要取出数值的变量,取出数值之后,程序会开始与case中所设定的数字或字节作比对,如果符合就执行以下的陈述句,直到遇到break后离开switch区块,如果没有符合的数值或字节,则会执行default后的陈述句, default不一定需要,您可以省去这个部份。 来看看上一个范例的成绩等级比对如何使用switch来改写:
import java.util.Scanner; 在这个程序中,您使用除法并取得运算后的商数,如果大于90的话,除以10的商数一定是9或10(100分时),在case 10中没有任何的陈述,也没有使用break,所以会继续往下执行,直到遇到break离开switch为止,所以学生成绩100分的话,也会显示A的成 绩等级;如果比对的条件不在10到6这些值的话,会执行default下的陈述,这表示商数小于6,所以学生的成绩等级就显示为E了。 注意在case后的等号是冒号而不是分号,这是个很常键错的符号;如果您比对的是字节,则记得加上单引号(' '),例如: case 'A':
这个程序与使用if来判断成绩等级的程序有何不同?如果纯綷比对数字或字节的话,建议使用switch,因为它只会在一开始的 switch括号中取出变量值一次,然后将这个值与下面所设定的case比对,但如果您使用if的话,每次遇到条件式时,都要取出变量值,效率的差异就在 这,例如: if(a == 1)
// .... else if(a == 2) // .... else if(a == 3) // .... 这个程序片段中在最差的状况下,也就是a = 3时,共需三次比对,而每次比对都必须取出变量a的值一次,如果换成switch的话: switch(a) {
case 1: // .. break; case 2: // .. break; case 3: // .. break; } 在这个程序片段中,我们只在一开头switch的括号中取出变量a的值,然后逐一比对下面的case,效率的差别就在于这边。 当然并不是使用if就不好,遇到复合条件时,switch就帮不上忙了,您无法在switch中组合复杂的条件陈述,这时就得使用if了,简单的说, if 与switch两者可以搭配着灵活使用。 |