将字节分配给最终整数

assign byte to Final Integer

可以将已声明为 final 的类型 int 的变量分配给字节数据类型变量吗?为什么?

public class ByteDataType {
    public int x=20;
    byte a=x;                 //This is an error 
    public final int z=30;
    byte c=z;                 // This is not an Error !! Why???
}

我猜这是因为编译器可以很容易地在编译时检查 z 是否在范围内,因为它是常量(最终的)但是对于 x 编译器需要更多的努力来检查 x 不能有自初始化以来发生了变化,为此编程语言编写规范的人决定禁止 a=x 以使编译器的工作更轻松。