4
byte b=5;
Integer i=(int)b;//b cast to int and int wrapped into Integer
Integer k=(byte)b;//compilation error, cannot convert from byte to Integer
Integer z=(byte)5;//compiles

我的问题是为什么Integer z=(byte)5编译而不编译Integer k=(byte)b?为此,Integer z1 = (byte)5L还要Integer z2 = (byte)5.3F编译。是因为我试图强制转换编译时间常数并且强制转换对它没有影响吗?

4

1 回答 1

6

作为任务

Integer z=(byte)5

使用文字值,编译器立即将其翻译为

Integer z = Integer.valueOf(5);

编译器不够聪明,无法引用变量,例如:

Integer k= (byte)b;
于 2013-05-02T18:28:44.020 回答