Java - Switch case 语句知识点(面试)解析
2018-03-28 15:17
991 查看
Switch case 语句知识点介绍
案例分析以及注意事项
switch(表达式){ case表达式常量1:语句1;break;case表达式常量2:语句2;break;......case表达式常量n:语句n;break;[default:语句n+1;] }
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
0
1
2
练习3:
输出结果如下:
0
1
2
default
1.标准型(case后面都有break语句,case后的值都是整数)
2.常量型(case后面都有break语句,case后的值都是常量)
3.char类型(case后面都有break语句,case后的值都是char类型)
实例:java 用switch语句解决月薪范围问题
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。
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。
相关文章推荐
- java中switch case语句需要加入break的原因解析
- Java switch-case语句用法
- java 数据类型,运算符 分支语句 面试知识点总结与习题
- java_switch-case语句
- java7 switch case支持字符串的原理解析
- 知名互联网公司校招 Java 开发岗面试知识点解析
- JAVA流程控制 IF ELSE语句与Switch Case语句的使用
- Java的switch-case语句
- 知名互联网公司校招 Java 开发岗面试知识点解析
- Java的if、switch...case控制语句 求水仙花数
- 【JAVA基础】switch case语句用法
- Java自学之路-Java基础教程-14:Java基本语句之4-条件判断语句switch和case
- Java-switch语句必知知识点
- 知名互联网公司校招 Java 开发岗面试知识点解析
- java练习 四、 判断语句 switch……case
- Java switch-case语句用法
- Java switch-case语句用法
- C++程序员学Java系列之十一:流程控制语句switch,case,break,default
- java基础(六) switch语句的深入解析
- java学习 六、条件语句 switch……case