黑马程序员技术交流社区
标题:
switch语句能否作用在byte上,能否作用在long上
[打印本页]
作者:
张森
时间:
2013-1-3 11:08
标题:
switch语句能否作用在byte上,能否作用在long上
switch语句能否作用在byte上,能否作用在long上。求分析
作者:
刘文超
时间:
2013-1-3 11:42
本帖最后由 刘文超 于 2013-1-3 11:54 编辑
lz你好,我们又见面了、
在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。
但是我们可以将long型显示转换为int的,如截图中switch((int) l);
敬上代码一段,截图一张:
package org.qyx.online;
public class TestSwitch {
/**
* @category switch语句能否作用在byte上,能否作用在long上?
* @author 刘文超
*/
public static void main(String[] args) {
String name="";
byte b=1;
switch(b){
case 1:
System.out.println("byte");
break;
}
short s=1;
switch(s){
case 1:
System.out.println("short");
break;
}
long l=1;
switch((int)l){
case 1:
System.out.println("long");
break;
}
switch(l){
case 1:
System.out.println("long");
break;
}
}
}
复制代码
AAAAA.jpg
(40.12 KB, 下载次数: 136)
下载附件
2013-1-3 11:54 上传
作者:
克零岚
时间:
2013-3-1 09:57
楼上的回答很好了,这个题经常出现在面试题里面,就是因为byte能够隐式的转换为int类型,而long型不能够转换。顺便补充一下,关于基本数据之间的类型转换,java中分为两种,自动类型转换(就是隐式转换)和强制转换,自动类型转换必须在相同数据类型的数据之间进行,并且必须是有低精度类型向高精度类型转换,很显然byte向int转换时会自动发生。下面给出数据精度的排列:(精度由低到高排列)byte——>short——>int——>long——>float——>double
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2