2012-11-10 66 views
15

最近在很多的节目我一直在看,我注意到Java静态代码块

static { 
    //some code here 
} 

我只是在寻找一些有关此信息特别,我已经习惯了块代码全部在方法中,或者只是类,这是否简单地使用静态修饰符来设置块中的所有代码,还是还有其他更多的东西?

+0

我想你可以认为它像一个构造函数,但对于类而言,不是类的任何实例。虽然我假设你可以有多个静态块,但是每个类只有一个构造函数。 –

回答

11

这可能是从 Static Initialization Blocks

重复的问题静态块只被调用一次,不管你创建该类型的多少对象。

+0

JVM是否保证每个应用程序域只能执行一次静态块? – AlexVPerl

+4

每次加载类时都会调用静态块。如果有多个加载类的类加载器,代码将被执行多次。 –

+0

如果程序多次启动,静态块会被多次调用 –

3

一旦JVM加载您的类,就会首先执行静态块中的代码(例如,在您的构造函数之前)。

+0

这段代码是不能从外部类访问的吗? – Dan

+1

以下是来自Oracle的官方说明http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html –