Types 将字节分配给最终整数

Types 将字节分配给最终整数,types,int,byte,final,Types,Int,Byte,Final,已声明的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??? } 我猜这是因为编译器可以很容易地在编译时检

已声明的
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是否在范围内,因为它是常量(final)但是对于x,编译器需要花费更多的精力来检查x在初始化之后是否没有改变,并且为这种编程语言编写规范的人决定禁止a=x,以使编译器的工作更轻松。

我不明白你说的,在第一种情况下,它检查int和byte的大小,它说类型不匹配。我们可以通过使用类型转换来消除此错误。我的问题是为什么在第二种情况下我们不需要进行类型转换。因为z是最终的,所以c=z和写c=30是一样的。如果您写c=10*z,您应该会得到与写c=300相同的编译时错误。