2014-05-15 50 views
1

我们知道,静态成员已经共享内存,它们与对象中没有关注:将静态内部类视为静态成员还是普通类?

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

爪哇琐事,因此-1。 –

回答

3

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

两个单独的。没错,就像你有:

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

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

由于static这里涉及的类,而不是类的实例。如果您的嵌套类不是static,则它与包含类的实例有关。

Oracle Nested Class Tutorial可能会有用。

+1

感谢-got它:) –