以下是有效的Java程序:
public class _ {
public static void main(String[] args) {
{
{
{
{
}
}
}
}
}
}
那些花括号是否会增加额外的语义?或者他们被视为空白?
答案 0 :(得分:9)
花括号只是在main方法中创建一个局部块作用域。在块内声明的变量在外部不可见。
这种编码方式用于最小化局部变量的范围。
public void someMethod() {
{
int x = 10;
System.out.println(x); // Ok
}
System.out.println(x); // Error, x not visible here
}
最好尽量减少您创建的局部变量的范围,特别是当您知道它们不会在程序中的任何其他位置使用时。因此,将它放在更大的范围内直到它结束是没有意义的。只需创建一个本地块范围,以便在块结束后它就有资格获得Garbage Collection
。
另请参阅下面的@Bohemian's
回答,其中还引用了另一个好处。
答案 1 :(得分:4)
它们是代码块。当复制粘贴包含局部变量声明的代码时,它们可以很方便:
{
int x = foo * bar;
someMethod(x);
}
{
int x = foo * y; // won't get "already defined variable" compile error
someMethod(x);
}
我也看到它们用于代码生成,因此您可以安全地向方法添加一些代码并定义变量,而不必担心它是否已在方法中先前定义过。
答案 2 :(得分:1)
花括号用于定义和限制范围。由于它们不包含任何语句或声明,因此它们将被编译器消除。
答案 3 :(得分:1)
额外括号的唯一目的是提供范围限制。变量a
void ad()
{
int a;
}
只会存在于这些大括号内,并且在它们之外没有范围。