现在有个类A,里面有静态方法B和静态属性C,
我记得static变量在类往内存装载的时候给static变量初始化,这样的话装载A的时候,C被初始化,B方法里的内容也被执行吗?,还有句什么时候装载类A呢?假如我不用class.forName(),用new来实例化这个类A的时候,具体在什么时候装载类A呢?谢谢,有点迷糊!

解决方案 »

  1.   

    不好意思,红色字部分是多余了,肯定不执行呵呵还有个问题就是,我调用静态方法B的时候,如 A.B()的时候,被动的先装在这个类A之后,调用此方法B吗?
      

  2.   

    Java的动态性体现在类的按需载入。Java提供了两种方法来实现动态性,一种是隐式的(implicit),也就是用到new这个java关键词时,会让类装载器按需载入你所需要的类;另一种是显式的(explicit),显式的方法又分成两种方式,一种是经由java.lang.Class里的forName方法,另一种则是经由java.lang.ClassLoader里的loadClass()方法。 
      

  3.   

    “我调用静态方法B的时候,如 A.B()的时候,被动的先装在这个类A之后,调用此方法B吗?”
    没错
    你可以试一下:在A类中直接写:
    static{System.out.println("...");}
    这一句必定在A类装载时执行、你调用A.B()时将会看到打印,说明A被装载。