类型转换和编译时间常量

Nis*_*ant 4 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
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么Integer z=(byte)5编译而Integer k=(byte)b不是?对于这个问题Integer z1 = (byte)5L,Integer z2 = (byte)5.3F也编译.是因为我试图转换编译时常量并且转换对它没有影响吗?

Rei*_*eus 6

作为任务

Integer z=(byte)5

使用文字值,它由编译器立即翻译

Integer z = Integer.valueOf(5);
Run Code Online (Sandbox Code Playgroud)

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

Integer k= (byte)b;
Run Code Online (Sandbox Code Playgroud)