简单的说,类成员属于一个类,不属于一个特定的对像,在定义时前面加上STATIC,可以说,类成员在类加载后并没有实例化前就存在了,以后的静态方法或类方法都可以直接访问。
但实例成员指的是一个类加载并实例化后,由JAVA虚拟机分配的内存资源,它的访问只有非静态方法才行。
对于同一个类,它的实例成员存在于每一个具体对象中,但它的类成员存在于全局静态区中。

解决方案 »

  1.   

    to smismilingdeng(笑笑的邓冲):
    你说static data member在类并没有实例化以前就存在了,那么它的内存是怎么划分的,这个与C++的静态对象有关哦!实际上所有的类都已经初始化了,只不过是匿名对象而已,并且初始化顺序是不确定的,所有的实例是以0值初始化的,并非调用构造函数,当然,有必要的实例必须用new亲自分配
      

  2.   

    在你的程序第一次调用该类时(生成对象或调用了该类的静态方法)JVM 才调入该类,
    static data member 在此时完成初始化,将之置于静态区中的,该静态区也位于heap中
    与c++有所不同。若是生成对象,则此时再调用构造函数。