如果你给
public class test
{
public static void main(String ar[])
{
if (true)
int i=0;
}
}
它没有编译,但带大括号的相同代码是:
public class test
{
public static void main(String ar[])
{
if (true)
{int i=0;}
}
}
解释是什么?
基本上,变量声明只能在块中声明。
看着“陈述”的语法在 Java 语言规范中 - 它包括 Block,但不包括 LocalVariableDeclarationStatement - 后者是块的语法.
这实际上是一个实用主义问题:如果没有大括号,则只能使用单个语句。如果没有后续语句,则声明变量是没有意义的,因为您不能use那个变量。你也可以有一个表达式语句没有变量声明 - 并且is允许。
这可以防止出现以下错误:
if (someCondition)
int x = 0;
System.out.println(x);
乍一看可能还不错,但实际上相当于:
if (someCondition)
{
int x = 0;
}
System.out.println(x);
就我个人而言,无论如何我总是使用大括号,因为它使得这种错误更难创建。 (我曾经被它咬过一次,而且发现有问题的代码非常困难。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)