初始化块和块之间是否存在区别以指定范围

时间:2011-10-16 03:41:56

标签: java initialization curly-braces

如果你写一个课程并且你使用这样的东西

...
int x;
{ x = 2; }
...

这将是一个初始化块吗?

那么你如何使用花括号来指定范围,以便它们像任何其他代码一样执行?基本上它们不是构造函数的一部分。

实施例

如果你在switch语句中使用一个块,它会像初始化块一样执行吗?

    switch(...)
    {
    case :
    { // this right here how does the compiler know the difference?
    ...
    break;
    }
    }

1 个答案:

答案 0 :(得分:2)

初始化块仅适用于类范围内的块,并且不在函数原型之前(即不是函数体的块)。

在函数体内,您创建的任何块都将引入范围,但不会被解释为初始化。

示例:

public class NameOfClass {
    {
        // This is an initalization block
    }

    AccessModifier ReturnType nameOfFunction(ParamType nameOfParam) {
        // This is a function body and is not an initialization

        {
          // This introduces scope, is not an initialization
        }
    }
}