java static final 静态成员变量占用内存
package test.others;
public class Test {
private String sNormal;
private static String sStatic;
private void funNormal(){
}
private static void funStatic(){
}
void main(String argv[]){
Test test = new Test();
}
}
如上,sStatic, funNormal, funStatic 是在虚拟机加载类 Test 时就加入到类 Test 方法区的内存中(为它们申请内存)。而在 new Test() 时才把 sNormal 放到 test 指向的堆中(为它申请内存)。
因此,类 static 成员变量,类方法及类 static 方法都只占用一份内存。并不会因为 new 了多个类实例而增加。而只有类的普通成员变量才会每个实例一份。
实际上,这与 C++ 是一样的。
参考:http://www.blogjava.net/Jack2007/archive/2008/05/21/202018.html