2014-05-15 47 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它:) –