为什么不能在没有花括号的循环中为整数赋值int?

时间:2010-01-07 23:36:30

标签: java

  

可能重复:
  Why this is not compiling in Java?

在java中,花括号对于循环的一行是可选的,但是我发现了一个不允许的情况。例如,这段代码:

for(int i = 0; i < 10; i++)
    Integer a = i;

不会编译,但是如果你添加大括号,就像这样:

for(int i = 0; i < 10; i++){
    Integer a = i;
}

会的。为什么这段代码不能编译?

3 个答案:

答案 0 :(得分:11)

因为在单行语句中声明一个新变量是没有意义的,因为它会立即超出范围。

如果你看一下Java中statement的定义,它不包含LocalVariableDeclarationStatement,而block则包含。{/ p>

答案 1 :(得分:8)

如果您没有花括号,则无法输入变量声明。 (变量没用)

请参阅specification。 ( LocalVariableDeclarationStatement 只能直接在 Block 内部发生。)

答案 2 :(得分:-2)

我想知道它是否与以下陈述是复合的事实有关?

for(int i = 0; i < 10; i++)
    Integer a;
    a = i;