java case switch面试_Java - Switch case 语句知识点(面试)解析

Switch case 语句知识点介绍

Swith case 语句支持的类型

Switch case 语句执行顺序

案例分析以及注意事项

Switch case 语句与if else 语句的区别

1. Swith case 语句支持的类型Switch case 语句可以用来处理int,short,byte,char,(任何能转换成整型的类型)以及enum枚举类型 ,不能处理long,string类型。java switch基础语法

switch(表达式){ case表达式常量1:语句1;break;case表达式常量2:语句2;break;......case表达式常量n:语句n;break;[default:语句n+1;] }

Switch case 语句执行顺序一个case语句的表达式常量成为标记,代表一个case语句的入口。执行switch语句的流程是:

1.      执行switch 括号内的表达式,表达式的值,只能为int,short,byte,char,enum类型的。

2.      将表达式的值与case 语句后的表达式常量进行匹配。如果匹配成功,进入case 子句分支执行,break语句用来结束操作,跳出switch结构。

3.      如果匹配不成功,查看是否有default子句,如果没有,直接结束switch结构,如果有default子句,执行default子句。

4.      default语句位置可以随意放,但是执行顺序永远分支最后。

switch表达式的值决定选择哪个case分支,如果找不到相应的分支,就直接从"default"开始输出。

当程序执行一条case语句后,因为例子中的case分支中没有break和return语句,所以程序会执行紧接于其后的语句。

练习1:

public class Switch {

public static void main(String[] args)

{

intx=0;

switch(x)

{

default:

System.out.println("default");

case 1:

System.out.println(1);

case 2:

System.out.println(2);

}

}

}

输出结果如下:default

1

2

练习2:ublic class Switch {

public static void main(String[] args) {

int x = 0;

switch (x) {

default:

System.out.println("default");

case 0:

System.out.println(0);

case 1:

System.out.println(1);

case 2:

System.out.println(2);

}

}

}

输出结果如下:

0

1

2

练习3:

public class Switch {

public static void main(String[] args) {

int x = 0;

switch (x) {

case 0:

System.out.println(0);

case 1:

System.out.println(1);

case 2:

System.out.println(2);

default:

System.out.println("default");

}

}

}

输出结果如下:

0

1

2

default

3. 案例分析以及注意事项

java switch语句注意事项switch(A),括号中A的取值只能是整型或者可以转换为整型的数值类型,比如byte、short、int、char、还有枚举;需要强调的是:long和String类型是不能作用在switch语句上的。     case B:C;case是常量表达式,也就是说B的取值只能是常量(需要定义一个final型的常量,后面会详细介绍原因)或者int、byte、short、char(比如1、2、3、200000000000(注意了这是整型)),如果你需要在此处写一个表达式或者变量,那么就要加上单引号; case后的语句可以不用大括号,就是C不需要用大括号包裹着;     default就是如果没有符合的case就执行它,default并不是必须的。案例分析:

1.标准型(case后面都有break语句,case后的值都是整数)

int i=3;

switch(i)

{

case 1:

System.out.println(1);

break;

case 2:

System.out.println(2);

break;

default:

System.out.println("default");

break;

}

2.常量型(case后面都有break语句,case后的值都是常量)

private final int NUM1=1;

private final int NUM2=1;

int i=3;

switch(i)

{

case NUM1:

System.out.println(1);

break;

case NUM2:

System.out.println(2);

break;

default:

System.out.println("default");

break;

}

3.char类型(case后面都有break语句,case后的值都是char类型)

int i=3;

int b = 2;

switch(i)

{

case ‘a‘:

System.out.println(1);

break;

case ‘b‘

System.out.println(2);

break;

default:

System.out.println("default");

break;

}

实例:java 用switch语句解决月薪范围问题public class SwitchDemo {

public static void main(String[] args) {

int month = 8;

String monthString;

switch (month) {

case 1: monthString = "January";

break;

case 2: monthString = "February";

break;

case 3: monthString = "March";

break;

case 4: monthString = "April";

break;

case 5: monthString = "May";

break;

case 6: monthString = "June";

break;

case 7: monthString = "July";

break;

case 8: monthString = "August";

break;

case 9: monthString = "September";

break;

case 10: monthString = "October";

break;

case 11: monthString = "November";

break;

case 12: monthString = "December";

break;

default: monthString = "Invalid month";

break;

}

System.out.println(monthString);

}

}

4.  Switch case 语句与if else 语句的区别switch和if语句都是Java的选择语句,这两种语句都是允许在程序运行时控制程序的执行过程。

switch和if-else相比,由于使用了Binary Tree算法,绝大部分情况下switch会快一点,除非是if-else的第一个条件就为true。

编译器编译switch与编译if...else...不同。不管有多少case,都直接跳转,不需逐个比较查询。

相比于if-else结构,switch的效率绝对是要高很多的,但是switch使用查找表的方式决定了case的条件必须是一个连续的常量。而if-else则可以灵活的多。

switch效率高,从汇编代码可以看出来。switch只计算一次值,然后都是test。

switch的效率与分支数无关。当只有分支比较少的时候,if效率比switch高(因为switch有跳转表)。分支比较多,那当然是使用switch。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值