当我尝试以下代码时,它会给我一个错误
int a =1,b=2;
if(a < b)
int c = 10;
但如果我做同样的添加花括号,它可以正常工作
int a =1,b=2;
if(a < b)
{
int c = 10;
}
但我很好奇为什么Java不允许在if条件中创建变量。
答案 0 :(得分:5)
关于整数,它只是你不能在没有括号的if
声明下声明。请注意,这将是完全没有意义的,因为它意味着声明将是if
语句的本地语句,它也会有一条指令(它的意思是没有括号),这意味着这个声明会永远不会被使用。
更多地使用&#34; visual&#34;:
if (condition) instruction;
相当于
if (condition) {
instruction;
}
所以在你的情况下
if(a < b) {
int c = 10;
}
是一个无意义的代码,因为永远不会使用c
。因此,Java允许编写
if(a < b) int c = 10;
带括号的if
语句将允许您在块中的任何内容(甚至根本没有内容)但如果您在不使用声明的变量的情况下进行声明,您仍然会收到警告。
答案 1 :(得分:1)
您的int c = 10;
应该是一个块本地变量。你只能将这些内部,一个块(或某些控制结构,如for
),这些块用curlies表示。裸体int c = 10;
不是块。