我怀疑它是如何在Java中使用静态块的。据我所知,每当JVM加载类时,都会执行静态块内的代码。我不明白的是,什么时候正是一个类加载。JAVA执行多少次静态块?
例如,假设我有类MyObject
内静态块,然后从另一个类我有这样的代码:
MyObject o1= new MyObject();
MyObject o2= new MyObject();
多少次静态块在这种情况下执行?
我怀疑它是如何在Java中使用静态块的。据我所知,每当JVM加载类时,都会执行静态块内的代码。我不明白的是,什么时候正是一个类加载。JAVA执行多少次静态块?
例如,假设我有类MyObject
内静态块,然后从另一个类我有这样的代码:
MyObject o1= new MyObject();
MyObject o2= new MyObject();
多少次静态块在这种情况下执行?
静态块内部的代码在JVM第一次加载类时执行。
如果再次加载,那么静态块将不会执行。您可以使用Class.forName(“class”)方法显式加载该类来执行您的静态块。
你的情况,
MyObject o1= new MyObject();
MyObject o2= new MyObject();
当你第一次创建对象时,你的静态块将被执行。你再次创建另一个对象,它不会执行。他们共享相同的数据副本。
什么问题?何时载入类或执行了多少次静态块? – seal
@seal - 我问了两个问题 – Szanownego
一个类只加载一次,第一次需要加载。 JVM的确切时间取决于JVM的实现。 –