有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java这个最终的整数变量初始化有什么问题?

我尝试了这段代码,并进行了大量的修改。但我不知道为什么这是非法的。从理论上解释什么是错误的

class Example{
    public static void main(String args[]){
        final int y;
        y=100;
        byte b;
        b=y;
    }
}

共 (1) 个答案

  1. # 1 楼答案

    我猜你是在问为什么密码会给你

    Example.java:6: error: incompatible types: possible lossy conversion from int to byte

       b=y;
         ^
    

    但这段代码没有:

    class Example{
        public static void main(String args[]){
            final int y=100; // <=======
            byte b;
            b=y;
        }
    }
    

    原因是,如果不将该值作为初始值设定项提供(稍后通过赋值将其赋值),编译器不会将其视为编译时常量,因此不知道该值是否适合byte。部分原因是,要将其视为编译时常量,编译器必须处理这样做的可能性:

    class Example{
        public static void main(String args[]){
            final int y;
            if (Math.random() < 0.5) {
                y=100;
            } else {
                y=1000;
            }
            byte b;
            b=y;
        }
    }
    

    因此,当100是初始值设定项时,编译器仅将其作为编译时常量处理,而不是当它是赋值时