java static成员变量内存分配

来源:百度知道 编辑:UC知道 时间:2024/05/23 19:52:42
若类A继承了类B,则子类A的类成员变量能不能与其父类B的类成员变量同名?
如果能的话,类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的值。
如果两个变量的内容不一样,打印的结果也是不同的。你可以试试。

这说明了占用的是同一片空间;声明了静态变量,数据将存储到静态空间。

程序内存空间分为:

静态空间: “方法区”也属于、“串池”也是。
只申