Потому что объявлять новую переменную в однострочном операторе не имеет смысла, так как она сразу выходит из-под действия.
Если вы посмотрите на определение оператора оператора в Java, то он не включает в себя LocalVariableDeclarationStatement, в то время как block включает в себя.
Если у вас нет фигурных скобок, вы не можете поместить объявление переменных. (Переменная будет бесполезна)
См. спецификацию . (A LocalVariableDeclarationStatement может произойти только непосредственно внутри Block.)
.Интересно, имеет ли это отношение к тому, что следующее утверждение является составным?
for(int i = 0; i < 10; i++)
Integer a;
a = i;