大家好,我是你的老师父,上一篇讲了if和else分支,那这次讲讲switch分支控制。

语法

语法很简单看下边代码:

switch(变量) {

case 常量值1:

//逻辑1;

break;

case 常量值2:

//逻辑2;

break;

default

//逻辑3;

}

解释:

switch是切换的意思,case是例子,事实的意思。那根据什么切换呢?就是switch中的变量,变量是多少,就会匹配到具体的case中,只要匹配到了某一个case,就会一直执行到方法结束,这是switch的特性。

注意case中是不能写变量的,必须是常量

举个例子,看下图:

上边通过System.in接收控制台输入,上一篇文章已经详细讲解过System.in了。那接收到输入值之后可以转换为int类型。转换完成后,作为switch中的变量,根据此变量的具体值来决定到底去执行那个case中的逻辑。

比如我输入了1,那inputNumber的值就是1,那么通过switch来切换分支到底到哪个用例中,结果匹配到的结果是1的用例了也就是第一个case 1的分支,然后就执行了打印输出1。

break是什么意思?

break是断开的意思,在这里表示逻辑执行完毕,不会再继续执行下去了,也就是断开正在执行的逻辑,那如果去掉break呢?那就是没断开,还会去执行下边的逻辑,再举个例子吧,比如下图:

我输入了2,然后没有匹配到case 1,匹配到了case 2,但是为什么又匹配到case 3了呢?上边说过了,只要匹配到某个case,程序就会一直执行下去!所以需要在匹配到之后,把逻辑截断,这就是break的作用,用来断开正在执行的逻辑。

那这个就比较有意思了,比如我想让3以下的数字都乘以10,4-6的数字都乘以20,怎么做呢?看下图:

代码是不是很有意思?为什么case 1和case 2以及 case 4和case 5中没有逻辑呢?

因为如果输入的是1的话,那其实会匹配到case 1,那这个时候,case 2和case 3都会执行,因为case 3按照题目来看是最后执行的逻辑,所以,只需要在case 3中写入题目的逻辑控制,就可以执行了。那这个时候用一个break来断开逻辑执行就可以结束了。

default是什么意思?

大家都看到最后有个default了吧?这个是什么意思呢?就是你的变量没有被任何case匹配到,那它就执行default的程序,相当于默认的逻辑,比如上边的例子,如果都匹配不到,就只能打印不认识了。比如下:

我输入了0,那任何case都不会匹配到的,所以,输出了“不认识”。

关于if...else...和switch

聪明的你可能发现switch的所有逻辑都可以用if...else...来实现啊?比如上边的例子可以这样写:

这样也没问题。那这就引入了一个问题:

如何选择switch和if...else...

1、判断的结果是常量的情况下可以选择switch也可以选择if...else...

但如果条件是判断大小,比如

if (a > b) {...}

那这种情况,switch实现起来就很难,因为case的值是常量。这个时候用if...else...

2、如果分支特别多,建议用switch,唯一好处是容易读懂,这样对于以后维护代码是有很大好处的,至少看代码不费劲,但是分至少,比如三四个,那句用if...else...好了。

那下一节讲讲for、do...while和while吧。

查看原文 >>
相关文章