2016-10-10 59 views
-1

我怀疑它是如何在Java中使用静态块的。据我所知,每当JVM加载类时,都会执行静态块内的代码。我不明白的是,什么时候正是一个类加载。JAVA执行多少次静态块?

例如,假设我有类MyObject内静态块,然后从另一个类我有这样的代码:

MyObject o1= new MyObject(); 
MyObject o2= new MyObject(); 

多少次静态块在这种情况下执行?

+0

什么问题?何时载入类或执行了多少次静态块? – seal

+0

@seal - 我问了两个问题 – Szanownego

+1

一个类只加载一次,第一次需要加载。 JVM的确切时间取决于JVM的实现。 –

回答

0

静态块内部的代码在JVM第一次加载类时执行。

如果再次加载,那么静态块将不会执行。您可以使用Class.forName(“class”)方法显式加载该类来执行您的静态块。

你的情况

MyObject o1= new MyObject(); 
MyObject o2= new MyObject(); 

当你第一次创建对象时,你的静态块将被执行。你再次创建另一个对象,它不会执行。他们共享相同的数据副本。

+1

*“每次JVM第一次加载类时”* - 这是多少次? :-)第一次只有 –

+0

。 – Pirate

+0

什么是“* JVM *第一次加载类的时间*”?多久才能加载一次“*第一次*”?你是什​​么意思与“*如果你再次加载*”;你怎么看,你多久可以上课? – Holger