2015-08-21 2 views
-1

Почему не генерируется исключение NullPointerException, если для экземпляра класса Statics установлено значение null? Я понимаю, что статическая переменная распределяется между всеми экземплярами, и их всего одна копия. Означает ли это, что статические переменные не живут в куче? Ну, я думаю, это то, что он подразумевает?Где статические члены живут, если не на куче?

Таким образом, я думаю, что более большой вопрос заключается в том, где живут статические переменные/методы?

Рассмотрим следующий пример:

public class Statics { 

public static int count = 0; 

public static void main(String[] args){ 
    System.out.println(Statics.count); 
} 
} 


public class StaticsTest { 
public static void main(String[] args){ 
    Statics t1 = new Statics(); 
    t1 = null; 
    System.out.println(t1.count); //Output of zero was printed which I didn't expect. 
} 
} 

Если они не живут в куче, я предполагаю, что они не получают мусора?

+0

Счетчик записей является статическим. – Emd4600

ответ

1

Там нет смысла кучи, памяти, GC вообще ..

Дело в том, статические члены принадлежит к классу, а не экземпляра. Поэтому Java просто нужно знать его тип, хотя экземпляр имеет значение

Смежные вопросы