java static成员变量内存分配
来源:百度知道 编辑:UC知道 时间:2024/05/23 19:52:42
如果能的话,类A与类B的类成员变量在内存里是怎么分配的,它们是否占有同一片空间,还是它们各自分配不同的内存空间?请给我详细的解释一下吧,谢谢!
谢谢各位的解答,虽然在这里找不到答案,但是还是非常感谢你们
能,给你个程序实例
class One
{
static String a = "我是1";
}
public class PrintTi extends One
{
public static void main(String[] args)
{
System.err.println(One.a);
System.out.println(a);
}
}
不是同一空间,分配不同内存。具体怎么分那是JVM的事情了
可以同名:
A类是一个对象,他所有的成员变量实际地址按照类型分配在不同的内存地方(比如:堆,栈)
而A对象上的成员变量实际上只是对它们的引用. 父类和子类 虽然 成员变量名称相同,但他们的引用地址不一样. 所有没有冲突的.
上面的特别注意:静态的变量与对象无关;请不要把这和对象扯上关系。
public class Test {
static String str= "ab";
public static void main(String[] args) {
System.out.println(str.hashCode());
System.out.println(Test2.str.hashCode());
}
}
class Test2 extends Test{
static String str = "aa";
}
结果是:3104 3104 ----以上打印了改数据的hashcode的值。
如果两个变量的内容不一样,打印的结果也是不同的。你可以试试。
这说明了占用的是同一片空间;声明了静态变量,数据将存储到静态空间。
程序内存空间分为:
静态空间: “方法区”也属于、“串池”也是。
只申