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"



















정답 : 



댓글

이 블로그의 인기 게시물

About JVM Warm up

About idempotent

About Kafka Basic

About ZGC

sneak peek jitpack

Spring Boot Actuator readiness, liveness probes on k8s

About Websocket minimize data size and data transfer cost on cloud

About G1 GC

대학생 코딩 과제 대행 java, python, oracle 네 번째