动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网
首页 > 文章

switch语句结构解析

07-30 16:09 365浏览
举报 T字号
  • 大字
  • 中字
  • 小字

在经历了if语句在多重嵌套下,显得非常凌乱,代码的可读性非常差的遭遇之后,越来越多的人选择使用switch语句。switch语句之所以备受青睐是因为switch使用更简洁的代码却能实现和使用语句if相同的功能只。只不过switch语句需要在多重判断下来执行,这就需要有一定的逻辑思维能力。因此,为了我们更好地理解和使用switch语句这就需要我们对switch语句结构解析

我们首先来明确一下switch语句的适用场景:switch 语句用于基于不同条件执行不同动作。我们可以称为开关语句,当然理解上不要以为就只有开和关,可以想象它是一个多路开关。实际上,switch语句是一种多分支结构。我们来看一下它的语句结构:

switch (表达式)

{

    case 常量表达式1:    语句1

    case 常量表达式2:    语句2

       ┇

    case 常量表达式n:    语句n

    default:        语句n+1

}

switch后面的小括号是一个整型表达式,这与if不同。if条件表现的是相互对立的两种状态,而对于多分支结构的switch,是用多个整数值表现多种选择。if条件的对立性总是相对于0而言,所以只要某种数据类型的表达式能够表示0值,便可以充当if语句的条件,但是switch中的表达式的值需要对应到不同的处理入口,其相当于入口编号,所以限制以用整型数表示是明智的。

switch后面括号内“表达式”的值与某个case后面的“常量表达式”的值相等时,就执行此case后面的语句。执行完一个case后面的语句后,流程控制转移到下一个case继续执行。如果你只想执行这一个case语句,不想执行其他case,那么就需要在这个case语句后面加上break,跳出switch语句。正常我们都希望只执行一个符合条件的case语句,所以一般后面都会加上break,以便执行完成后,直接跳出switch语句。

下面我们用一个简单的例子来说明:

getDay() 方法返回 0 至 6 之间的周名数字(weekday number)。

(Sunday=0, Monday=1, Tuesday=2 ..)

使用周名数字来计算周的名称:

switch (new Date().getDay()) {

    case 0:

        day = "星期天";

        break;

    case 1:

        day = "星期一";

         break;

    case 2:

        day = "星期二";

         break;

    case 3:

        day = "星期三";

         break;

    case 4:

        day = "星期四";

         break;

    case 5:

        day = "星期五";

         break;

    case 6:

        day = "星期六";

}

“case常量表达式:”即处理入口(也称其为“标号”),常量表达式相当于入口编号,入口编号是不能重复的,所以每一个case的常量表达式的值必须互不相同。处理入口编号不能重复,但可以颠倒。也就是说,入口编号的顺序不重要。各个case(包括default)的出现次序可任意。在if语句中,if与else属下各自描述的语句是彼此独立的。但是在switch语句中,每个case只是标定处理入口,各个入口的语句并不排他。因此,switch语句中的全部处理入口描述的语句构成了一个顺序执行的动作序列。

上面的代码中出现的break是一个关键字,该关键字独立构成一条语句,其功能是在switch、for、while、do-while语句中,跳出结构而转向执行吓一条语句。或者说break语句强行终止上述语句的执行。对于if语句,其if-else结构中的语句块本身就是排他性的,所以没有必要用break去干预。

  通过switch语句的实例分析,相信你对switch语句结构这个知识点有了理解,其实switch语句总体来说还是很简单易懂的,只要你稍稍学习,就能熟练掌握switch语句啦。当然,配上本站的专题讲解课那就更有成效了。

0人推荐
共同学习,写下你的评论
0条评论
携代码的男孩纸
程序员携代码的男孩纸

24篇文章贡献108038字

作者相关文章更多>

推荐相关文章更多>

Java数据结构

HelloWorld10-31 08:24

浅谈MySQL中SQL优化的常用方法

军哥08-12 23:29

五分钟读懂UML类图

江湖人称小李白12-10 10:41

MyBatis开发框架的四大核心

IT逐梦者08-17 21:43

一次搞定continue,break和return

HelloWorld11-06 11:19

发评论

举报

0/150

取消