2014-10-20 4 views
-4

Мой код:блок в объявлении класса в Java

class Y 
    { 
     { 
      System.out.println("pranav"); 
      Y a = new Y(); 
     } 

     public static void main(String args[]) 
     { 
      Y b = new Y(); 
     } 
    } 

выход:

бесконечный цикл

Мой вопрос поток управления (выполнение программы) начните с того, где и как это работает, кто-нибудь может объяснить, пожалуйста ???

ответ

2

Этот анонимный блок инициализатора вызывает бесконечную рекурсию;

{ 
    System.out.println("pranav"); 
    /*Y a=new Y();*/ 
} 

Не создавать новый Y там, это рекурсивная.

Поскольку этот блок копируется в по умолчанию пустой конструктор;

public Y() { 
    super(); 
    System.out.println("pranav"); 
    /*Y a=new Y();*/ // <-- like so. 
} 
+1

Я уже сделал. Блок инициализатора копируется в конструктор (по умолчанию). –

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