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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗闯 黑马帝   /  2012-3-29 16:34  /  3361 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

中午下了一段代码,其中用到了判断语句switch   往switch中传入了  int类型合适,但是String和long却不行

问问:switch的作用范围,为什么它不能作用在String和long上。

13 个回复

倒序浏览
switch(x)  这个x的类型只能是int 或是枚举类型,其他类型都不行!
回复 使用道具 举报
switch(ex)中,ex是一个整数表达式。
因此传递给switch和case语句的参数应该是int,short,char,byte
long,string都不能作用于swtich
回复 使用道具 举报
本帖最后由 曹魁 于 2012-3-29 16:46 编辑

swtich()里面必须是int和enum--即枚举类型。
short、 char 或者 byte他会自动转换为int型,
long不能自动转换为int;再者long比int范围大,用的话可能会丢失精度。

Java语法是有标准规定的。
不过在JDK7.0的标准,switch是可以使用string类型。
回复 使用道具 举报
swtich()里面必须是int和enum--即枚举类型。
Java语法规定的。
不过在JDK7.0的标准,switch是可以使用string类型。
回复 使用道具 举报
在switch中只能加入 比int范围小的基本数据类型(也就是byte,short,int,char)
因为byte,short,char,,可以隐式的转换为int类型,
其实最后放的还是int类型
所以long, string不行
回复 使用道具 举报
izwj 中级黑马 2012-3-29 18:06:35
7#
如果判断的具体数值不多,而且符合byte short int char这四种类型时使用switch
虽然也可以使用if,建议使用swtich语句。因为效率稍高。
对区间判断,对结果为boolean类型判断,使用if。
回复 使用道具 举报
switch 只能用在 byte short int char这4个里哈
回复 使用道具 举报
胡川 中级黑马 2012-3-29 18:45:26
9#
swtich()里面必须是int和enum--即枚举类型。

short、 char 或者 byte他会自动转换为int的。。

long不能自动转换为int..
Java语法的标准规定的。Long型的占得数据位数太大了。不过在JDK7.0的标准,switch可以使用string类型了。

因为long比int范围大..可能会丢失精度..
回复 使用道具 举报
首先、在switch(c)中,c只能是整数表达式或者枚举常量。

其次、整数表达式可以是int基本类型或Integer包装类型,因为byte,short,char都可以隐含转换为int,
所以这些类型以及这些类型的包装类型也是可以的。

再次、long和String类型都不符合switch语法的规定,并且不能隐式的转换成int类型,
所以它们不能作用于switch语句中。
回复 使用道具 举报
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以自动转换为int,所以,这些类型以及这些类型的包装类型也是可以的。long和String类型都不符合switch的语法规定,并且不能被隐式(自动)转换成int类型,所以,它们不能作用于swtich语句中。
回复 使用道具 举报
switch()中可以是byte,short,int,char。
回复 使用道具 举报
jdk1.7以前switch()中可以是byte,short,int,char。以及枚举类型
从jdk1.7开始可以放String类型,他其实在底层调用的是String的hashcode方法得到穿进去的String对象的hashcode值,即还是以数值型的数据进行判断
int    hashCode()   Returns a hash code for this string.     hashCode()方法返回的是int类型值
回复 使用道具 举报
switch(expr1)中,expr1是一个整数表达式。因此传递给switch和case语句的参数应该是int、short、char或则byte。long,string都不能作用于swtich
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马