【问题标题】:assign byte to Final Integer将字节分配给最终整数
【发布时间】:2015-06-18 10:37:30
【问题描述】:

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

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???
}

【问题讨论】:

    标签: types int byte final


    【解决方案1】:

    我猜这是因为编译器可以在编译时轻松检查 z 是否在范围内,因为它是常量(最终),但是对于 x,编译器需要花费更多的精力来检查 x 自从初始化和编写这种编程语言规范的人决定禁止 a=x 以使编译器的工作更轻松。

    【讨论】:

    • 我明白你在说什么,在第一种情况下,它检查 int 和 byte 的大小,它说类型不匹配。我们可以使用类型转换来消除这个错误。我的问题是为什么我们不需要在第二种情况下进行类型转换。
    • 因为 z 是最终的,所以 c=z 与写 c=30 相同。如果你写 c=10*z 你应该得到和你写 c=300 一样的编译时错误。
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 2019-01-08
    • 2015-12-06
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    相关资源
    最近更新 更多