将任意大括号作为陈述 - 它们是什么意思?

时间:2012-10-30 18:27:25

标签: java

以下是有效的Java程序:

public class _ {

    public static void main(String[] args) {
        {
            {
                {
                    {

                    }
                }
            }
        }
    }

}

那些花括号是否会增加额外的语义?或者他们被视为空白?

4 个答案:

答案 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;
    }

只会存在于这些大括号内,并且在它们之外没有范围。