QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
2191
查看: 1180|回复: 13

[系列教程] 【Java 教程(原创)】013.开关语句详解(有思考题)

[复制链接]
最佳答案
42 
累计签到:941 天
连续签到:1 天
零度非安全 发表于 2017-1-16 17:01:07 118013 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 零度非安全 于 2017-1-19 14:35 编辑

【Java 教程(原创)】索引帖

switch 语句是单条件多分支的开关语句,它的一般格式如下(其中,break 语句是可选的):
  1. switch(表达式){
  2.         case 常量值1:
  3.                 若干语句
  4.                 break;
  5.         case 常量值2:
  6.                 若干语句
  7.                 break;
  8.         .
  9.         .
  10.         .
  11.         case 常量值n:
  12.                 若干语句
  13.                 break;
  14.         default:
  15.                 若干语句
  16. }
复制代码

switch 语句中,“表达式”的值必须为 byte、short、int、char  型或枚举类型;“常量值 1”到“常量值 n”也必须是 byte、short、int、char  型或枚举类型常量,而且互不相同

学过其它编程的鱼油们,相信这个语句怎么执行的你们都知道,我也在这里不再重复了。我就简单举个栗子给你们演示下这个语句的用法,例子效果如下图所示:

switchUse.gif

例子代码如下:

switchUse.java

  1. enum Season{
  2.         春季,夏季,秋季,冬季
  3. }

  4. public class switchUse{
  5.         public static void main(String args[]){
  6.                 int x = 96,y = 1;
  7.                 Season season = Season.春季;
  8.                 switch(x + y){
  9.                         case 1:
  10.                                 System.out.println(x + y);
  11.                                 break;
  12.                         case 'a':
  13.                                 System.out.println(x + y);
  14.                         case 10:
  15.                                 System.out.println(x + y);
  16.                                 break;
  17.                         default: System.out.println("没有般配的" + (x + y));
  18.                 }
  19.                 switch(season){
  20.                         case 冬季:
  21.                                 System.out.println("寒冬腊月");
  22.                         case 春季:
  23.                                 System.out.println("春天种下种子");
  24.                         case 秋季:
  25.                                 System.out.println("秋天收获果实");
  26.                                 break;
  27.                         case 夏季:
  28.                                 System.out.println("暑假真好,又可以打撸了");
  29.                 }
  30.         }
  31. }
复制代码
思考:想一想为什么会输出两个 97 和 秋季对应的内容?后面回复答对给鱼币

需要强调的是,switch 语句中表达式的值必须是 byte、short、int、char  型 或 枚举类型 如果将上例中的
  1. int x = 96,y = 1;
复制代码

更改为
  1. long x = 96,y = 1;
复制代码
编译时将会出现错误。不信,你试试看。反正我试过了,试试又不会怀孕。想一想这又是为什么呢? 多动脑,勤动手!

compile error.gif



【特别注意】帖子中的栗子希望鱼油们能自觉的手动敲上去,不要单纯的复制粘贴保存,然后编译运行。



评分

参与人数 1荣誉 +5 收起 理由
alltolove + 5 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

楼层
跳转到指定楼层
最佳答案
97 
累计签到:502 天
连续签到:30 天
不二如是 发表于 2017-1-16 17:59:02 | 显示全部楼层
好一个试试,又不会怀孕
最佳答案
42 
累计签到:941 天
连续签到:1 天
零度非安全  楼主| 发表于 2017-1-16 18:59:01 | 显示全部楼层
不二如是 发表于 2017-1-16 17:59
好一个试试,又不会怀孕

稳不会的,老司机的车永远都不会翻
最佳答案
50 
累计签到:1266 天
连续签到:1 天
~风介~ 发表于 2017-1-17 10:16:57 | 显示全部楼层
long是浮点型的?年代太久远了记不清了~
最佳答案
42 
累计签到:941 天
连续签到:1 天
零度非安全  楼主| 发表于 2017-1-17 10:23:00 | 显示全部楼层
~风介~ 发表于 2017-1-17 10:16
long是浮点型的?年代太久远了记不清了~

Java 中的 long 是长整型的
最佳答案
0 
累计签到:11 天
连续签到:1 天
小小七 发表于 2017-1-20 14:32:50 | 显示全部楼层
打印两遍,是因为漏了break吧。

评分

参与人数 1鱼币 +5 收起 理由
零度非安全 + 5 奖励

查看全部评分

最佳答案
42 
累计签到:941 天
连续签到:1 天
零度非安全  楼主| 发表于 2017-1-20 14:34:10 | 显示全部楼层
小小七 发表于 2017-1-20 14:32
打印两遍,是因为漏了break吧。

是的,没错
最佳答案
0 
累计签到:99 天
连续签到:1 天
464318257 发表于 2017-1-23 13:31:05 | 显示全部楼层
最佳答案
42 
累计签到:941 天
连续签到:1 天
零度非安全  楼主| 发表于 2017-1-23 13:40:49 | 显示全部楼层

你好活跃呀,哇,我就喜欢活跃的人
匿名鱼油
pyt1 匿名鱼油  发表于 2017-2-23 08:30:35
case 'a' 和 case '春' 的语句后没有break
最佳答案
0 
累计签到:52 天
连续签到:1 天
CarpLyy 发表于 2017-3-20 13:37:17 | 显示全部楼层
输出两次的原因是在执行的case中没有break,会继续执行直到break
最佳答案
0 
累计签到:52 天
连续签到:1 天
CarpLyy 发表于 2017-3-20 13:42:26 | 显示全部楼层
不能用long类型数据,是因为当它转为int类型时,会有精度丢失。case语句执行时默认将数据都转为int

评分

参与人数 1鱼币 +6 收起 理由
零度非安全 + 6 热爱鱼C^_^

查看全部评分

最佳答案
0 
累计签到:3 天
连续签到:1 天
pyrui 发表于 2017-10-30 09:51:26 | 显示全部楼层
因为没有加break,就自动跳到下一个分支继续执行了。
最佳答案
0 
累计签到:46 天
连续签到:2 天
王子会哭 发表于 2017-11-24 14:10:59 | 显示全部楼层
因为在case语句中没有加break,然后直接跳转到下个语句执行了,下个语句有break,跳出判断语句

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /2 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-12-18 13:09

快速回复 返回顶部 返回列表