【Java 教程(原创)】013.开关语句详解(有思考题)
本帖最后由 零度非安全 于 2017-1-19 14:35 编辑【Java 教程(原创)】索引帖
switch 语句是单条件多分支的开关语句,它的一般格式如下(其中,break 语句是可选的):
switch(表达式){
case 常量值1:
若干语句
break;
case 常量值2:
若干语句
break;
.
.
.
case 常量值n:
若干语句
break;
default:
若干语句
}
在 switch 语句中,“表达式”的值必须为 byte、short、int、char型或枚举类型;“常量值 1”到“常量值 n”也必须是 byte、short、int、char型或枚举类型常量,而且互不相同{:10_298:}。
学过其它编程的鱼油们,相信这个语句怎么执行的你们都知道,我也在这里不再重复了。我就简单举个栗子给你们演示下这个语句的用法,例子效果如下图所示:
例子代码如下:
switchUse.java
enum Season{
春季,夏季,秋季,冬季
}
public class switchUse{
public static void main(String args[]){
int x = 96,y = 1;
Season season = Season.春季;
switch(x + y){
case 1:
System.out.println(x + y);
break;
case 'a':
System.out.println(x + y);
case 10:
System.out.println(x + y);
break;
default: System.out.println("没有般配的" + (x + y));
}
switch(season){
case 冬季:
System.out.println("寒冬腊月");
case 春季:
System.out.println("春天种下种子");
case 秋季:
System.out.println("秋天收获果实");
break;
case 夏季:
System.out.println("暑假真好,又可以打撸了");
}
}
}思考:想一想为什么会输出两个 97 和 秋季对应的内容?后面回复答对给鱼币{:10_340:}。
需要强调的是,switch 语句中表达式的值必须是 byte、short、int、char型 或 枚举类型 。如果将上例中的
int x = 96,y = 1;
更改为
long x = 96,y = 1;编译时将会出现错误。不信,你试试看。反正我试过了,试试又不会怀孕{:10_249:}。想一想这又是为什么呢?{:10_300:} 多动脑,勤动手!
【特别注意】帖子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。
点我前往上一讲
点我前往下一讲
好一个试试,又不会怀孕{:10_281:} 不二如是 发表于 2017-1-16 17:59
好一个试试,又不会怀孕
稳不会的,老司机的车永远都不会翻{:10_332:} long是浮点型的?年代太久远了记不清了~{:10_256:} ~风介~ 发表于 2017-1-17 10:16
long是浮点型的?年代太久远了记不清了~
Java 中的 long 是长整型的{:10_249:} {:9_228:}打印两遍,是因为漏了break吧。 小小七 发表于 2017-1-20 14:32
打印两遍,是因为漏了break吧。
是的,没错{:10_256:} {:10_288:} 464318257 发表于 2017-1-23 13:31
你好活跃呀,哇,我就喜欢活跃的人{:5_92:} case 'a' 和 case '春' 的语句后没有break 输出两次的原因是在执行的case中没有break,会继续执行直到break 不能用long类型数据,是因为当它转为int类型时,会有精度丢失。case语句执行时默认将数据都转为int 因为没有加break,就自动跳到下一个分支继续执行了。 因为在case语句中没有加break,然后直接跳转到下个语句执行了,下个语句有break,跳出判断语句 谢谢讲解 学java的时候看了一遍现在实习了再看一遍 为啥评论这么少呢 赞一个感谢楼主 因为case'a'和case'春季'都没有break,所以会继续执行下一个case语句。 因为a的ASCII是97,case:‘a’那一项没有break,而且long的数据占得太大,转换成int,会丢失精度,java的switch不支持long 因為case 'a' 和 case '春' 後面沒有break 两个long相加会自动转为int型,发生精度缺失。
字符a的ASCII值是97.
case所在行没有break不会跳出switch循环,自动执行到下一行遇到break跳出循环。
页:
[1]
2