黑马程序员技术交流社区

标题: 面试题:swith语句问题? [打印本页]

作者: 靓仔    时间: 2013-10-29 08:27
标题: 面试题:swith语句问题?
本帖最后由 靓仔 于 2013-10-29 21:57 编辑

问:switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
作者: 杨增坤    时间: 2013-10-29 08:33
这些你都可以自己测试一下,这样你自己测试一下,记忆更深刻!
作者: ixiangfeng    时间: 2013-10-29 08:43
多动手敲代码才是王道啊
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
作者: 靓仔    时间: 2013-10-29 08:44
我试过long和string都不行,就是想知道原因。
作者: ixiangfeng    时间: 2013-10-29 09:21
靓仔 发表于 2013-10-29 08:44
我试过long和string都不行,就是想知道原因。

这是语法规定 规定啊 当然你要问为什么这样规定的话我就不知道了
作者: To    时间: 2013-10-29 21:41
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
作者: 喂,咱不离!    时间: 2013-10-29 21:57
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,但是在JDK1.7新特性后 String 就可以作用到switch 上了  ,你看看JDK1.7的新特性
1,switch中可以使用字串
Java代码

String s = "test";   
switch (s) {   
  case "test" :   
     System.out.println("test");  
  case "test1" :   
    System.out.println("test1");
    break ;   
  default :   
    System.out.println("break");
    break ;   
}  
作者: 血影-追梦    时间: 2013-10-30 23:44
在switch(expr1)中expr1支持int型,而byte,short,char可以自动转换成int型,所以也支持。jdk 5.0添加了枚举,jdk 7.0又添加了String.
所以有byte,short,chart,int,枚举,String




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