블록

2014-10-20 3 views
-4

내 코드 :블록

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

이미 수행했습니다. 이니셜 라이저 블록은 (기본) 생성자에 복사됩니다. –