"스프링 입문을 위한 자바 객체 지향의 원리와 이해"라는 책을 읽다가 내가 동적 로딩에 대해서 잘못 알고 있었음을 알게 되었다. 다음과 같은 소스코드가 있다. public class A { public static void main(String[] args) { System.out.println("main"); System.out.println(B.value); } } class B { static int value = 0; static { System.out.println("B"); } } 위와 같은 코드를 실행하면, 나는 B -> main -> 0이 호출될 것이라고 생각했으나, 정답은 main -> B -> 0 순으로 호출된다. 처음에는 그 이유가 Java의 동적 로딩(Dynamic loading) ..
static 영역은 동적 로딩 과정에서 초기화되지 않는다
"스프링 입문을 위한 자바 객체 지향의 원리와 이해"라는 책을 읽다가 내가 동적 로딩에 대해서 잘못 알고 있었음을 알게 되었다. 다음과 같은 소스코드가 있다. public class A { public static void main(String[] args) { System.out.println("main"); System.out.println(B.value); } } class B { static int value = 0; static { System.out.println("B"); } } 위와 같은 코드를 실행하면, 나는 B -> main -> 0이 호출될 것이라고 생각했으나, 정답은 main -> B -> 0 순으로 호출된다. 처음에는 그 이유가 Java의 동적 로딩(Dynamic loading) ..
2023.11.01