更新时间:2020-11-17 17:53:19 来源:极悦 浏览1074次
switch语句和if else语句算是Java控制语句里面比较经典的两个,在Java代码中常常会出现,但是我们有时候会对选择switch语句还是if else语句产生争议,本文我们就来对比一下switch语句和if else语句。
switch语句可以算是if else语句的一种特殊情况。当我们使用if else语句来做判断时,如果我们只想对条件表达式的结果做一些特定值的判断,那么就可以使用switch语句。例如:我们需要根据当前月份来判断这个月份应该有多少天,我们可以使用if else语句来处理这个问题,但同样也可以使用switch语句来处理。switch语句的使用方式如下: switch (变量或表达式)
{
case 值1:
{
//处理内容
break;
}
case 值2:
{
//处理内容
break;
}
default
{
//处理内容
break;
}
}
switch右侧的小括号中的变量或表达的值的结果是一个确定的值。大括号中可以有多个case语句,case右侧的值如果等于switch右侧小括号中的值,那么程序将执行当前case大括号下的内容(case下的大括号可以省略,但建议保留),在大括号中的最后一行需要加入break语句,表示执行完当前条件分支的case之后程序跳出当前switch结构,如果没有break则程序会顺序执行下面的case语句代码,即使case后的值不等于switch的条件值。如果switch中所有的case值都不等于switch的条件值,那么程序将执行default后的大括号中的内容,default分支即为默认条件分支,也就是说当所有的case分支都没有起作用时程序将执行此默认分支,(default分支可以省略,但建议保留)。例如:int month = 11;
int day;
switch (month)
{
case 0: //一月
{
day = 31;
break;
}
case 1: //二月
{
day = 28;
break;
}
case 2: //三月
{
day = 31;
break;
}
case 3: //四月
{
day = 30;
break;
}
//5月到11月略
case 11: //十二月
{
day = 31;
break;
}
default: //其它情况
{
day = 0;
break;
}
}
上面程序执行的过程为:switch (month)中的条件表达式的值为11,也就是十二月(月分从0开始),程序会将这个值与所有的case条件值做比较。第一个case的条件值为0,11与0相比较的结果为假,则程序跳过此case分支;第二个case的条件值为1,11与0想比较结果为假,则程序跳过此case分支;依次比较,当case 11: { } 这个条件值为11,11与11相比较的结果为真,于是程序进入此case分支,执行day = 0;语句。注意,当执行完这个语句之后,程序需要通过break跳出当前switch结构,如果不使用break语句,程序在执行完day = 31之后,就会继续向下执行下一个分支,即使其条件不符合。也就是说,如果不用break跳出,程序在执行完day = 31后,还会继续向下执行day = 0;于是程序的运行结果就出现了错误。 通过上面例子我们可以看到swtich与if else语法的书写方式不同,但功能很类似,只不过switch中的case值是固定的常量,而if 后的条件值可以是一个变量或条件表达式,所以说if else结构在使用范围上比switch更广,但switch结构的语法更清晰,它适用于一些特定的情况,在一些固定值的条件判断中使用switch更加方便美观一些。
通过以上对于switch语句和if else语句比较分析,在实际应用中如何判断是使用if else语句 还是 switch语句 ,目前一般是从代码可读性的角度出发,基于判断条件的数量来决定:数量越多就越倾向于 switch 而不是 if else。事实证明除了代码可读性,switch 的运行速度是比 if else 更快的。因此,一般情况下,我们在编程的过程中还是推荐使用switch语句的。想要了解更多的控制语句,可以观看本站的Java SE教程,里面有着对Java控制语句的精彩讲解,引人入胜,不容错过哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习