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
也会编译。是因为我试图转换编译时常量并且转换对它没有影响吗?
答案 0 :(得分:6)
作为作业
Integer z=(byte)5
使用文字值,编译器立即将其翻译为
Integer z = Integer.valueOf(5);
编译器不够智能,无法引用变量,如下所示:
Integer k= (byte)b;