众所周知,静态成员有共享内存,他们不关心对象:
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
?分配两个不同的内存位置还是共享内存位置?如果不同的内存位置,是什么原因?
答案 0 :(得分:3)
java如何处理classobj1和classobj2?分配两个不同的内存位置或共享一个?
两个独立的。就像你有:
Map m1 = new HashMap();
Map m2 = new HashMap();
如果内存位置不同,原因是什么?
因为此处的static
与类相关,而不是与该类的实例相关。如果您的嵌套类不是static
,则它与包含类的实例相关。
Oracle Nested Class Tutorial可能很有用。