Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA静态块执行了多少次?_Java_Static_Jvm_Block - Fatal编程技术网

JAVA静态块执行了多少次?

JAVA静态块执行了多少次?,java,static,jvm,block,Java,Static,Jvm,Block,我怀疑它在Java中是如何工作的静态块。据我所知,每次JVM加载类时,都会执行静态块中的代码。我不明白的是什么时候加载了一个类 例如,假设我在类MyObject中有一个静态块,然后在另一个类中有以下代码: MyObject o1= new MyObject(); MyObject o2= new MyObject(); 在这种情况下,静态块被执行了多少次?当JVM第一次加载类时,静态块中的代码被执行 如果再次加载,则不会执行静态块。您可以使用class.forName(“class”)方法显式

我怀疑它在Java中是如何工作的静态块。据我所知,每次JVM加载类时,都会执行静态块中的代码。我不明白的是什么时候加载了一个类

例如,假设我在类
MyObject
中有一个静态块,然后在另一个类中有以下代码:

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

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

当JVM第一次加载类时,静态块中的代码被执行

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

就你而言

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

首次创建对象时,将执行静态块。再次创建另一个对象,它将不会执行。他们共享同一份数据。

问题是什么?什么时候加载类或者静态块执行了多少次?@seal-我问了两个问题。类只加载一次,第一次需要加载。JVM何时执行此操作取决于JVM实现。@PeterLawrey-。。。。除非您有类装入器树。Hmmm。这取决于你如何“张嘴”。另一种说法是,类被加载多次,每次加载都会得到不同的类型(以及不同的
class
对象)。“每次JVM第一次加载该类”-这是多少次?:-)只有第一次。什么是“每次JVM第一次加载类”?“第一次”加载类的频率是多少?“如果你再次加载”是什么意思;你认为,你多久可以加载一个类?这意味着如果你想重新加载你的类。不。现在还不清楚。“第一次”不止一次发生的事情是一个逻辑矛盾。逻辑上的矛盾永远不清楚。