A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jing迪 高级黑马   /  2013-11-4 16:08  /  6844 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jing迪 于 2013-11-4 16:29 编辑

switch后面跟的表达式的值只能是数值么??
为什么不能是boolean类型的值??
视频上说的switch后面要跟表达式  

表达式的定义是什么?
我所知道的表达式是由一个或者多个操作数通过多个操作符链接而成的式子
既然switch后面可以跟表达式 为什么不能跟boolean类型的表达式???

boolbean b = true;
switch (b)
{
        case true:
       break;
       case  false:
       break;
}
为啥不行 求解答  难道boolean类型的表达式不能放在switch后面吗?只能放结果是数值类型的表达式 ?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

11 个回复

倒序浏览
switch也相当一个循环,case后边跟的是满足条件,所以必须是一个常量,或者常量表达式,意思就是必须跟一个唯一值。只有当条件满足这个唯一值得时候才会执行满足条件的代码,如果不满足会继续下一个case,直到找到满足的条件,如果都不满足就执行default,不知道这么说你是否明白?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
Mr.Z.Lee 发表于 2013-11-4 16:11
switch也相当一个循环,case后边跟的是满足条件,所以必须是一个常量,或者常量表达式,意思就是必须跟一个 ...

true  和 false 不是boolean型常量么  为何不行??
回复 使用道具 举报
1.6或以前表达式只能是 byte short char int 类型.
1.7可以是String类型.
回复 使用道具 举报
switch(x)  x只能是这四种类型的byte;short;int;char
回复 使用道具 举报
本帖最后由 ixiangfeng 于 2013-11-4 18:56 编辑

在switch(b)中,b只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,1.7新增String类型 所以,这些类型以及这些类型的包装类型也是可以的。显然,long类型不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它不能作用于swtich语句中

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
boolean类型的是不行的 这是语法规定 不要问为什么 只要去记住它就行了
回复 使用道具 举报
看看附件里面那一串英文提示,你就知道什么意思了,是sun公司规定的。

未命名.jpg (21.2 KB, 下载次数: 349)

未命名.jpg
回复 使用道具 举报
ixiangfeng 发表于 2013-11-4 16:21
boolean类型的是不行的 这是语法规定 不要问为什么 只要去记住它就行了

刚试了一下  string 和char都可以的  
回复 使用道具 举报
简单来说如果,我的理解是switch的作用是在你有很多选择的条件下使用的,根据表达式的值来确定case,这里有个前提就是选择比较多为了方便才使用switch。
如果你的表达式是boolean 型的话,那结果无非trun和false两种,这样的话完全没必要使用switch,使用if是最佳的。
所以,1.6或以前表达式只能是 byte short char int 类型.
1.7可以是String类型.这样就完全够使用了。并且也是最佳的。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 麦者 于 2013-11-4 16:39 编辑

java中的switch中表达式的值可以是byte、short、char、int、enum、String,JDK1.7加入了String类,和枚举类是新特性,注意在用枚举类的时候要注意小细节:
  1. switch(number){
  2. case ONE:
  3.         break;
  4. case TWO:
  5.         break;
  6. }
复制代码
即直接用枚举的常量,不需要再用 number.ONE 来表示。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
jing迪 发表于 2013-11-4 16:26
刚试了一下  string 和char都可以的

不好意思  刚才去试了下 String类也是可以的 去查了一下发现这是在JAVA7 改进的  char是可以的 这个我上面说过 它可以自动转成int类型的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马