switch关键字是一种选择分支的表达.比如一个变量a = 3,那么有
int a = 3;
switch (a){
case 3:
System.out.println("3");
break;
case 2:
System.out.println("2");
break;
default:
System.out.println("non");
}
这会输出3.
switch允许哪些变量呢
枚举,int型(或者可以隐式转换成int的类型)
case后允许常量,字面常量(必须和switch后的类型对应)
所以switch后允许的类型有:byte,char,short,int,Enum
jdk7 后允许了String
long 和 double 类型不可以,,因为他们不能隐式转换成int
如何隐式转换:
1字节 | 2字节 | 4字节 | 8字节 |
---|---|---|---|
byte,boolean | char,short | int,float | double,long |
规定是这样的:字节数低的向字节数高的转换时隐式转换(float,double分开算),顺序是这样的:
byte –> short –> char –> int –>long –>float –> double
低位的能隐式转换成高位的.boolean类型不计算进去..
有些题大家可以看看
- 下面代码哪儿会报错,为什么?
short a = 1;
int b = 2;
a = a + b; // 这一句报错. a + b时,a隐式转换成int,结果是int,去赋值给short的a需要强制转换,所以会报错
a += b; // +=符号会进行自动强转
2.以下代码会报错吗?若不会,输出结果是什么?
int a = 'a' + 'A';// char隐式转成int,这里取a和A的ASCII编码,分别是 97 和 65
short b = 10;
long c = a + b; // short的b自动转成int, a+b结果的int自动转成long.所以c的值是172
System.out.println(c);