首先我们要了解:

switch中文的意思就是转换,break也就是打断的意思

switch怎么用,其实和if差不多

switch(变量){

case 常量 :

语句块

break;

//也可以有多个case

default :

语句块

break;

}

括号内只可以使用byte,short ,int,char类型的变量(然而这是JDK1.7之前的事)

JDK1.7之后还可以支持一种叫String 类型的变量

现如今已是2018年最新版的就是JDK1.10了

那么为什么1.7之前只能支持上面的四种呢?

首先我们要知道一个常识:相同类型的东西才可以去比较

计算机也是这样

因为我们case后免跟的是常量,而常量默认是int类型的

byte,short,char运算时自动提升成int

那么就变成int类型和int类型比较了

最后一个int也肯定是可以用的

 

先来一个小栗子:

 用if看起来有点麻烦,因为这里只做了1~3的假如这个数为100呢?

那岂不是要写100if(写个简单的判断,肯定不可能会去写这么多)

那么来试一下switch吧:

 

运行结果:

咱们要来理解一下这个switch到底是怎么判断的,嗯。

1.得到括号内变量的值,

然后与第一个case后的常量做等值判断

值相等运行这个case 冒号后的语句

遇到break直接跳出循环结束这个switch

2.接下来也是一样的

假如第一个case的值不想等

就将第二个case的值拿去比较

继续上面值相等的操作

3.default相当于if中的else

假如一个case都不想等,就执行default里语句

default和else一样,可以写可以不写,完全看需求

 

我们再看一个小需求,使用switch的另一种方式:

两种结果

1.月数正确

 2.月数错误

 

其实我们只要理解了break这个关键字

就可以理解我为什么case连着写了

switch中假如遇到了一个case,并且值相等,

就会运行这个case冒号后的语句,

如果在这个语句后面如果没用break

就会直接执行后面case冒号后的代码(无论结果是否相等)

直到遇到一个break时,才跳出(停止)整个switch。

 

由于1.3.5.7.8.10.12月都是31天

我就把case写成一排,前面的case冒号后什么都不写

只在最后一个case中写到days = 31 ;

然后在写一个break;

其实这样的效率是最高的

假如我们的是1月,第一个case就满足了

然后就去执行冒号后面发现是空的

就去找下一个case的冒号后面(因为没遇到break),发现也是空的

直到找到case 12 这个,把days 变成 31 ,遇到break,然后跳出switch

30天的也是一样的逻辑。

 

版权声明:本文为menghujava原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/menghujava/p/9670943.html