黑马程序员技术交流社区

标题: swtich是不是能够作用在byte、long、String上? [打印本页]

作者: 窦超    时间: 2011-12-19 22:21
标题: swtich是不是能够作用在byte、long、String上?
如题,swtich是不是能够作用在byte、long、String上?
作者: 马德强    时间: 2011-12-19 22:31
本帖最后由 马德强 于 2011-12-19 22:32 编辑

switch 只能放int类型的值,放byte,short,char类型的也可以是因为byte,short,char可以自动提升为int
long不行,是因为long类型不能自动转换为int类型,String 当然也不行。
enum 枚举类型是可以的。
作者: 段波    时间: 2011-12-19 22:31
可以作用在byte short char int 上 jdk1.7后可以作用在string 上

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

作者: 韩军博    时间: 2011-12-19 23:41
看张老师Java的面试宝典
作者: 张帅    时间: 2011-12-19 23:50
仅支持  byte、short、int、char  类型。
如果数值不多,且符合类型,建议使用 switch。其他情况和区间使用 if。
其实三元运算符也不错
作者: 曾运    时间: 2011-12-19 23:56
在JDK5.0中 switch中支持 byte short int char 枚举
在JDK7 .0中 switch支持字符串。
作者: 黑马巩伟伟    时间: 2011-12-20 00:18
switch后面的括号里面只能放int类型的值,注意是只能放int类型,但是放byte,short,char类型的也可以是因为byte,short,shar可以自动提升(自动类型转换)为int,不是说就可以放它们,说白了,你放的byte,short,shar类型,然后他们会自动转换为int类型(宽化,自动转换并且安全),其实最后放的还是int类型!long不行,是因为long类型不能自动转换为int类型
作者: 我心飞翔    时间: 2011-12-20 00:23
switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。

作者: 郭繁森    时间: 2011-12-20 07:53
选择语句 swtich 的选择类型有4中:
byte,short,int,char(注意:不是 long)
作者: 胡家福    时间: 2011-12-20 08:44
本帖最后由 胡家福 于 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
如果你用的是jdk1.7版本,恭喜你,switch可以使用String了。1.7以前是不行的。1.7之前只支持int类型和枚举。因为byte ,short,char可以自动提升为int类型。所以也支持这三种类型。
作者: 冯瑞君老师    时间: 2011-12-20 09:28
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语句。

作者: 冯瑞君老师    时间: 2011-12-20 09:50
switch支持  byte、short、int、char  类型,不过现在jdk7出来了 ,1.5的时候由于泛型的加入,到了7现在可以使用。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2