如果未使用带有if的大括号,则会出现Java代码编译错误

VIS*_*ARG 2 java if-statement

为什么以下代码会出现编译错误?

if (true)
    int p=10;
Run Code Online (Sandbox Code Playgroud)

如果我使用块,以下类似的代码可以工作:

if (true) {
    int p=10;
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Eclipse IDE.请让我知道为什么我们不能做第一个的确切原因.

Era*_*ran 9

没有范围,您不能声明变量.因此,您需要大括号才能声明p.

如果在if语句之外声明了p,则可以在if语句中为其分配一个值,而不使用大括号.

int p;
if (true)
     p = 10;
Run Code Online (Sandbox Code Playgroud)

  • 也许这就是编译器的编写方式.默认情况下没有大括号,范围只有一行.那么只为一行**声明任何变量**有什么意义呢?抛出编译错误不是一个更聪明的策略......嘿!你可能想做别的事情,你忘记了牙箍吗? (3认同)
  • 但默认情况下它在If语句的范围内....所以为什么编译器不理解其含义..因为在激活代码时它工作正常除了intialaztion (2认同)
  • 因为if语句不创建范围.大括号. (2认同)