众所周知,静态成员具有共享内存,它们与对象无关:
class TestStatic {
public static int a = 10;
}
class Main{
public static void main(//){
TestStatic obj1 = new TestObj//;
obj1.a=15;
TestStatic obj2 = new TestObj//;
// obj2.a equals 15 too
}
}
假设我们有以下情形:
class TestStatic {
public static class InnerClass {
}
public static void main(//) {
TestStatic.InnerClass classobj1 = new TestStatic.InnerClass();
TestStatic.InnerClass classobj2 = new TestStatic.InnerClass();
}
}
Java如何对待
classobj1
和classobj2
?分配两个不同的内存位置还是共享一个?如果内存位置不同,原因是什么? 最佳答案
java如何对待classobj1和classobj2?分配两个不同的内存位置还是共享一个?
两个分开的。就像您有:
Map m1 = new HashMap();
Map m2 = new HashMap();
如果内存位置不同,是什么原因?
因为此处的
static
与该类有关,而不与该类的实例有关。如果您有一个不是static
的嵌套类,则它与包含类的实例有关。Oracle Nested Class Tutorial可能有用。