本文
前往“校招VIP”小程序,访问更方便

【校招VIP】Java面试题:Java中switch多重选择语句块

csdn 08月04日

转载声明:文章来源https://blog.csdn.net/huiyanfreeflying/article/details/103914038

Java中switch多重选择语句块

switch 的特点是可以判断多个条件,if 的特点是执行少量判断,它们两个刚好形成互补的关系。

switch 语法格式:

switch(…){ case 1: … break; … default: … break; }

switch 基础使用:

int i = 3;
switch (i) {
case 1:
System.out.println("等于1");
break;
case 2:
System.out.println("等于2");
break;
case 3:
System.out.println("等于3");
break;
default:
System.out.println("等于其他");
break;
}

可用于 case 的类型有:

三个整数型和一个字符型:byte、char、short、int

枚举:

字符串(Java SE 7 新加入)

switch 注意事项
switch 使用时,每个选项最末尾一定不要忘记加 break 关键字,否则会执行多个条件。

案例:

int i = 1;
switch (i) {
case 1:
System.out.println("等于1");
case 2:
System.out.println("等于2");
case 3:
System.out.println("等于3");
default:
System.out.println("等于其他");
}

程序执行的结果:

等于1
等于2
等于3
等于其他

所以使用 switch 时,每个选项的末尾一定得加 break 关键字。

看一道习题,帮助更好地理解

String s = **new** String("laowang");
String s2 = **new** String("laowang");
System.out.println(s == s2);
**switch** (s) {
**case** "laowang":
System.out.println("laowang");
**break**;
**default**:
System.out.println("default");
**break**;
}

输出结果为:
laowang

为什么呢?String对象的switch比较使用的是equals方法,先比较的hashCode,hashCode是根据内容生成的,一般string对象的字符串值相同,即使不是同一个对象,hashCode也是一样的。然后比较完hashCode之后,再比较值,可知最后可以匹配,所以输出对应的值:laowang;

但其他类型,比如byte、char、int、short由于是基本数据类型,使用==进行比较。

暂无回复