首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么Java编译器不能理解这个变量总是被初始化?

为什么Java编译器不能理解这个变量总是被初始化?
EN

Stack Overflow用户
提问于 2012-11-05 23:49:05
回答 3查看 3.7K关注 0票数 54
代码语言:javascript
复制
class Foo{
    public static void main(String args[]){
        final int x=101;

        int y;
        if(x>100){
            y=-1;
        }
        System.out.println(y);
    }
}

Java编译器理解if语句的条件始终为真,因此y将始终被初始化。正如预期的那样,没有编译错误。

代码语言:javascript
复制
class Bar{
    public static void main(String args[]){
        final int x;
        x=101;

        int y;      
        if(x>100){
            y=-1;
        }
        System.out.println(y);
    }
}

但是当我将x的声明和初始化分成两行时,编译器似乎并不知道条件总是为真,而y总是会被初始化。

代码语言:javascript
复制
final int x;
x=101;
byte b;
b=x;
System.out.println(b);

同样的事情也会发生在这里,编译器会给出精度损失的错误。

代码语言:javascript
复制
final int x=101;
byte b;
b=x;
System.out.println(b);

同样,编译器可以理解x在b的范围内。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13235559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档