在java中,花括号对于循环的一行是可选的,但是我发现了一个不允许的情况。例如,这段代码:
for(int i = 0; i < 10; i++)
Integer a = i;
不会编译,但是如果你添加大括号,就像这样:
for(int i = 0; i < 10; i++){
Integer a = i;
}
会的。为什么这段代码不能编译?
答案 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;