读书人

jvm把java种初始化需要做哪些工作

发布时间: 2012-09-04 14:19:30 作者: rapoo

jvm把java类初始化需要做哪些工作?

1.有两个类,A类为:

public class A {private static A a=new A();//必须要先初始化类private static B b=B.getInstance();private A(){}public static A getInstance(){System.out.println("A被调用了...."+a);return a;}public void test(){System.out.println("A类中的b:"+b);}}

?

B类为:

public class B {private static B b=new B();//必须要先初始化类private static A a=A.getInstance();private B(){}public static B getInstance(){System.out.println("B被调用了...."+b);return b;}public void test(){System.out.println("B类中的a:"+a);}}

?还有一个测试类C:

public class C {/** * @param args */public static void main(String[] args) {B b=B.getInstance();b.test();System.out.println("=====");B b1=B.getInstance();b1.test();System.out.println("=====");B b2=B.getInstance();b2.test();A a=A.getInstance();a.test();System.out.println("----------");A a1=A.getInstance();a1.test();}}

?总结:这是javaeye上看到的一个帖子http://hllvm.group.iteye.com/group/topic/25526,感觉这个问题很有意思,可以推敲一下。java类初始化的时候,jvm优先考虑静态成员变量的初始化,然后才是构造函数,所以刚开始以为这两个类的实例化是一个死循环,后来发现jvm对所有类只初始化一次,这样就不会出现死循环了。但是关于jvm到底怎么初始化类的过程,很让人着迷。网上看到一个不错的文章分享了http://www.webspherechina.net/?viewnews-51644.html。

读书人网 >编程

热点推荐