我怀疑它在Java中如何工作静态块。据我所知,每次由JVM加载类时,都会执行静态块内的代码。我不明白的是什么时候加载了一个类。
例如,假设我在类MyObject
中有静态块,然后从另一个类我有这段代码:
MyObject o1= new MyObject();
MyObject o2= new MyObject();
在这种情况下执行静态块的次数是多少次?
答案 0 :(得分:0)
第一次由JVM加载类时执行静态块内的代码。
如果再次加载,则静态块将不会执行。您可以使用Class.forName(" class")方法显式加载该类来执行静态块。
在你的情况下,
MyObject o1= new MyObject();
MyObject o2= new MyObject();
首次创建对象时,将执行静态块。再次创建另一个对象,它将不会执行。他们共享相同的数据副本。