Static block And Instance Initialization Block (IIB) in Java

전 회사를 다니면서, 교육 받을 때 풀었던 문제랑 비슷한 문제를 최근에 페이스북 에서 봤는데 스태틱 블락과 인스턴스 초기화 블락에 관한 문제 이다. 아래와 같다. 아래와 같이 StaticBlock 의 클래스가 있을 때, 아래의 staticBlockTest 메서드 실행 시 출력 결과를 묻는 문제 였다. aField 는 클래스 스태틱 변수로 첫 출에서 SysOut을 찍을 경우, static block 에 의해 A 가 출력 된다. 두 번째 줄에서 StaticBlock 의 인스턴스를 new 연산자를 통해서 생성하는데, 이때 인스턴스 초기화 블록이 실행되며, aField 에는 "B"가 concat 되며, bField에도 동시에 "B" 가 concat 된다. 그리고 생성자에서 "C" 를 aField 와 bField 에 모두 concat 하고 있다. 따라서 line 별로 aField 와 bField 의 변수 값을 확인하면, 1 line aField = "A", bField = "" 2 line aField = "ABC", bField = "BC" 가 된다. 이제 세 번째 line 에서 생성한 인스턴스가 addD() 메서드를 호출한다. 3 line aField = "ABCD", bField = "BCD" 정답 :