【问题标题】:Not sure about default initialization of variables in Java [duplicate]不确定Java中变量的默认初始化[重复]
【发布时间】:2012-07-19 06:14:32
【问题描述】:

可能重复:
Uninitialized variables and members in Java
Why are local variables not initialized in Java?

Java 中的变量有默认值,对吧?甚至数组也由编译器初始化。
所以我无法理解以下内容:

int c;  
for(int i = 0; i < 10; i++){  
   c = i + 5;  
}  
System.out.println("Result = "+c);  

为什么会出现编译错误:

局部变量c可能没有初始化

c不是被编译器默认初始化为0吗?
那么为什么我会收到这个错误,如果我明确地执行int c = 0,为什么错误会消失?

【问题讨论】:

    标签: java variables initialization


    【解决方案1】:

    局部变量一定要初始化,类字段变量有默认值

    局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果您无法在声明它的地方初始化局部变量,请确保在尝试使用它之前为其分配一个值。访问未初始化的局部变量会导致编译时错误[...]

    【讨论】:

    • 1)这句话出自哪里? 2)这也适用于数组吗?
    • 是的,它也适用于对象,链接在报价末尾提供
    【解决方案2】:

    Beucase forloop 是条件循环。根据编译器c,如果没有进入那个条件循环,可能还没有初始化

    【讨论】:

    • 啊!好的。所以这里的编译器不够聪明,无法理解它会进入循环?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多