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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 窦超 黑马帝   /  2011-12-19 22:21  /  4464 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题,swtich是不是能够作用在byte、long、String上?

13 个回复

倒序浏览
本帖最后由 马德强 于 2011-12-19 22:32 编辑

switch 只能放int类型的值,放byte,short,char类型的也可以是因为byte,short,char可以自动提升为int
long不行,是因为long类型不能自动转换为int类型,String 当然也不行。
enum 枚举类型是可以的。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
段波 黑马帝 2011-12-19 22:31:52
藤椅
可以作用在byte short char int 上 jdk1.7后可以作用在string 上

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1 赞一个!

查看全部评分

回复 使用道具 举报
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量,
整数表达式可以是int基本类型或Integer包装类型,
由于,byte,short,char都可以隐含转换为int,所以,
这些类型以及这些类型的包装类型也是可以的。
然而,long和String类型都不符合switch的语法规定,
并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
看张老师Java的面试宝典
回复 使用道具 举报
张帅 黑马帝 2011-12-19 23:50:53
地板
仅支持  byte、short、int、char  类型。
如果数值不多,且符合类型,建议使用 switch。其他情况和区间使用 if。
其实三元运算符也不错

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
曾运 黑马帝 2011-12-19 23:56:55
7#
在JDK5.0中 switch中支持 byte short int char 枚举
在JDK7 .0中 switch支持字符串。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
switch后面的括号里面只能放int类型的值,注意是只能放int类型,但是放byte,short,char类型的也可以是因为byte,short,shar可以自动提升(自动类型转换)为int,不是说就可以放它们,说白了,你放的byte,short,shar类型,然后他们会自动转换为int类型(宽化,自动转换并且安全),其实最后放的还是int类型!long不行,是因为long类型不能自动转换为int类型

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。
回复 使用道具 举报
郭繁森 黑马帝 2011-12-20 07:53:29
10#
选择语句 swtich 的选择类型有4中:
byte,short,int,char(注意:不是 long)
回复 使用道具 举报
胡家福 黑马帝 2011-12-20 08:44:43
11#
本帖最后由 胡家福 于 2011-12-20 08:47 编辑

如果有什么不懂建议看毕老师的视频:http://dl.dbank.com/c0bj5wbhkz黑马程序员_毕向东_Java基础视频教程第02天-19-语句(Switch)
相关内容都能在这里面找到,讲得非常详细。如果你是自学的话,建议看这下面的视频,易懂,适合自学
http://edu.csdn.net/heima/video/javase_bxd.html
JAVA相关视频下载
switch语句选择的类型只有四种:byte,short,int,char.
因为switch(exp1)是个整数表达式,byte,short,char都能提升为int型,所以它们都可以,而long则不行
7.0以后支持String类型。
回复 使用道具 举报
舒远 黑马帝 2011-12-20 09:13:17
12#
如果你用的是jdk1.7版本,恭喜你,switch可以使用String了。1.7以前是不行的。1.7之前只支持int类型和枚举。因为byte ,short,char可以自动提升为int类型。所以也支持这三种类型。
回复 使用道具 举报
1.switch语句的一般形式
switch(表达式)
      { case  常量表达式1:语句组;break;
        case  常量表达式2:语句组;break;
          ......
        case  常量表达式n:语句组;break;
        [default:语句组;[break; ]]
      }
  2.执行过程
  (1)当switch后面“表达式”的值,与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句时,跳出switch语句,转向执行switch语句的下一条。
(2)如果没有任何一个case后面的“常量表达式”的值,与“表达式”的值匹配,则执行default 后面的语句(组)。然后,再执行switch语句的下一条。
3.说明
(1)switch后面的“表达式”,可以是int、char和枚举型中的一种。
(2)每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。
(3)case后面的常量表达式仅起语句标号作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束switch语句。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 赞一个!

查看全部评分

回复 使用道具 举报
switch支持  byte、short、int、char  类型,不过现在jdk7出来了 ,1.5的时候由于泛型的加入,到了7现在可以使用。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马