为什么Java不允许在条件语句中创建整数

sal*_*ter -1 java

当我尝试下面的代码时,它给了我一个错误

int a =1,b=2;
if(a < b)
 int c = 10;
Run Code Online (Sandbox Code Playgroud)

但如果我做同样添加花括号,它工作正常

int a =1,b=2;
if(a < b)
{
 int c = 10;
}
Run Code Online (Sandbox Code Playgroud)

但我只是好奇为什么Java不允许在if条件中创建变量.

Dic*_*ici 5

它不是整数,只是你不能在if没有括号的声明下声明.请注意,这将是完全没有意义的,因为它意味着声明将是if语句的本地,它也将有一条指令(它的意思是没有括号),这意味着永远不会使用此声明.

为了使它更"直观":

if (condition) instruction;
Run Code Online (Sandbox Code Playgroud)

相当于

if (condition) {
    instruction;
}
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下

if(a < b) {
   int c = 10;
}
Run Code Online (Sandbox Code Playgroud)

是一个无意义的代码,因为c永远不会被使用.因此,Java允许写入是没有意义的

if(a < b) int c = 10;
Run Code Online (Sandbox Code Playgroud)

if带括号的语句将允许您在块中的任何内容(甚至根本没有内容),但如果您在不使用声明的变量的情况下进行声明,您仍会收到警告.