언어/JAVA

이상하고 아름다운 JAVA 퀴즈 4

유호건 2023. 3. 13. 15:04
반응형

문제A

class Q4 {
    static {
        System.out.println("1");
    }
    
    public static void main(String[] args) {
        System.out.println("2");
    }

    static class SubQ4 {
        static {
            System.out.println("3");
        }
    }
}

출력값은 무엇인가?

 

 

문제 B

class Q4 {
    static {
        System.out.println("1");
    }
    
    public static void main(String[] args) {
        System.out.println("2");

        SubQ4.value++;
    }

    static class SubQ4 {
        private static int value = 123;

        static {
            System.out.println("3");
        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

정답

문제A) 1 2가 출력된다.

문제B) 1 2 3이 출력된다.

 

SubQ4 클래스는 static inner class이지만 실제 사용 전 까지는 메모리에 올라가지 않는다. (클래스 메타데이터 제외)

따라서 static 블럭 내부의 코드가 실행 되지 않는다.

반응형