类型转换和编译时间常量

时间:2013-05-02 18:11:41

标签: java casting

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)5LInteger z2 = (byte)5.3F也会编译。是因为我试图转换编译时常量并且转换对它没有影响吗?

1 个答案:

答案 0 :(得分:6)

作为作业

Integer z=(byte)5

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

Integer z = Integer.valueOf(5);

编译器不够智能,无法引用变量,如下所示:

Integer k= (byte)b;