转载声明:文章来源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由于是基本数据类型,使用==进行比较。