Java中的单独{code}是什么?

时间:2011-09-07 13:47:19

标签: java coding-style brackets

我最近阅读了一些使用{}特殊语法的代码,我问过一位经验丰富的Java开发人员,但他也无法回答。

public void doSomething() {
    someWorks();
    {
        someVariables;
        someMoreWorks();
    }
    someEvenWorks();
    {
        ...
    }
}

为什么代码作者将这些行放在{}中?我想在{}中声明的变量将在执行退出{}后立即释放,因为我不能再访问{}以外的变量了吗?

3 个答案:

答案 0 :(得分:6)

是的,唯一的区别在于范围界定。

偶尔这对于一次性代码非常有用,例如微基准测试,您希望能够剪切和粘贴块并进行微小更改,然后可能对块进行重新排序。

我很少(如果有的话)在“真实”代码中有这样的东西。

答案 1 :(得分:4)

这为他提供了一个嵌套的范围来声明“更多本地”变量。

  

我想在{}中声明的变量将在退出{}之后立即释放,因为我不能再访问{}以外的这些变量了吗?

取决于你对“发布”的定义(在方法结束之前它们很可能不会被垃圾收集,所以如果这很重要,你可能想要将它们清空),但是是的。

大括号的其他很少见的用法包括类和实例初始值设定项:

class A {
   static {
      // some class initialization code
   }

   {
      // some instance initialization code
   }

 }

答案 2 :(得分:1)

作者将这些变量放在{}中这一事实表明这些变量的范围只是{}定义的方法的范围。反过来,一旦方法完成执行,这些变量将用于垃圾收集。