我已经准备好参加Java认证考试,并且在其中一项练习测试中看到了类似的代码:
class Foo { int x = 1; public static void main(String [] args) { int x = 2; Foo f = new Foo(); f.whatever(); } { x += x; } // <-- what's up with this? void whatever() { ++x; System.out.println(x); } }
我的问题是…在方法外用花括号编写代码是否有效?这些(如果有)有什么影响?
从这里借来的-
通常,您需要将代码放在构造函数中以初始化实例变量。使用构造函数初始化实例变量有两种选择:初始化块和final方法。实例变量的初始化块看起来像静态初始化块,但没有static关键字: { // whatever code is needed for initialization goes here } Java编译器将初始化程序块复制到每个构造函数中。因此,该方法可用于在多个构造函数之间共享代码块。
通常,您需要将代码放在构造函数中以初始化实例变量。使用构造函数初始化实例变量有两种选择:初始化块和final方法。实例变量的初始化块看起来像静态初始化块,但没有static关键字:
{ // whatever code is needed for initialization goes here }
Java编译器将初始化程序块复制到每个构造函数中。因此,该方法可用于在多个构造函数之间共享代码块。