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

vem*_*emv 2 java

以下是有效的Java程序:

public class _ {

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

                    }
                }
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

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

Roh*_*ain 9

花括号只是在main方法中创建一个局部块范围.在块内声明的变量在外部不可见.

这种编码方式用于最小化局部变量的范围.

public void someMethod() {
    {
        int x = 10;
        System.out.println(x); // Ok
    }
    System.out.println(x); // Error, x not visible here
}
Run Code Online (Sandbox Code Playgroud)

最小化您创建的局部变量的范围是一种很好的做法,特别是当您知道它们不会在程序中的任何其他位置使用时.因此,将它放在更大的范围内直到它结束是没有意义的.只需创建一个本地块范围,以便Garbage Collection在块结束后它就有资格获得.

另请参阅@Bohemian's下面的答案,其中还引用了另一个好处.