静态内部类被视为静态成员还是普通类?

时间:2014-05-15 09:56:27

标签: java

众所周知,静态成员有共享内存,他们不关心对象:

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如何处理classobj1classobj2?分配两个不同的内存位置还是共享内存位置?如果不同的内存位置,是什么原因?

1 个答案:

答案 0 :(得分:3)

  

java如何处理classobj1和classobj2?分配两个不同的内存位置或共享一个?

两个独立的。就像你有:

Map m1 = new HashMap();
Map m2 = new HashMap();
  

如果内存位置不同,原因是什么?

因为此处的static相关,而不是与该类的实例相关。如果您的嵌套类不是static,则它与包含类的实例相关。

Oracle Nested Class Tutorial可能很有用。