This question already has answers here:
Static Block in Java [duplicate]
(7个答案)
4年前关闭。
我最近摸索到此代码:
问题是为什么我们在这里使用static,不能仅仅这样做:
我们从空间或时间上获得什么好处?
(7个答案)
4年前关闭。
我最近摸索到此代码:
public static ArrayList<HelloGreeting> greetings = new ArrayList<HelloGreeting>();
static {
greetings.add(new HelloGreeting("hello world!"));
greetings.add(new HelloGreeting("goodbye world!"));
}
问题是为什么我们在这里使用static,不能仅仅这样做:
public static ArrayList<HelloGreeting> greetings = new ArrayList<HelloGreeting>();
greetings.add(new HelloGreeting("hello world!"));
greetings.add(new HelloGreeting("goodbye world!"));
我们从空间或时间上获得什么好处?
最佳答案
如果要在加载类之后初始化某些数据,则在初始化它们时,可以使用静态块。静态块在每个类初始化时运行一次(如果一个类由不同的类加载器多次加载和初始化,则多次运行)。
静态块和非静态块之间的区别(第二种情况应该在{..}
中闭包)是,对于每个YourClass
实例,即在构造新实例时,将执行非静态块。接下来,静态块是线程安全的(尽管一个类可以由多个线程加载/初始化)
07-28 00:22