이전 글에서는 클래스 변수와 인스턴스 변수가 어떻게 선언되는지에 대해 알아봤습니다. 이번 글에서는 또다른 초기화 방식인 초기화 블럭에 대해 알아보려 합니다.
초기화 블럭은 문자 그대로 { }으로 구성됩니다. { } 안에 조금 더 긴 문장을 넣을수 있습니다. 명시적 초기화 역시 static을 붙인 클래스 변수와 아무것도 붙지 않은 인스턴스 변수가 있습니다.
이렇게 for문이나 if 문등의 긴 코드를 통해 초기화가 필요한 경우를 위해 사용됩니다.
클래스 변수의 초기화에도 순서가 있습니다. 기본 초기화가 1번 명시적 초기화(참조형 변수의 선언) 예를 들어 우리가 보고 있는 클래스 variable_lecture 의 객체를 만들기 위한 variable_lecture vl = new variable_lecture();
가 명시적 초기화 입니다. 그리고 마지막으로 초기화 블럭이 실행 됩니다.
1번 기본 초기화 (예 static int a = 10; )
2번 명시적 초기화 (예 variable_lecture vl = new variable_lecture(); )
3번 초기화 블럭 (예 static{ }; )
여기서 객체를 하나 생성했을때 a,b,c,s 값이 어떻게 나올까요?
기본 초기화 부터 차근히 계산해 나가겠습니다.
1. s = I am a static
2. s = I am a static man
3. a = 0
4. a = 1
5. a = 2 and c = 2
사실은 기본 초기화와 초기화 블럭이 순서대로 실행됨을 볼수 있습니다. 사실 저도 순서대로 실행되어 초기화 블럭이 기본 초기화가 끝난 뒤 실행될줄 알았지만 사실은 위에서 아래대로 초기화 되었습니다. 조금 더 공부가 필요할 거 같습니다.
다음 글에서는 인스턴스 초기화 블럭이 대해 알아보겠습니다.
'자바' 카테고리의 다른 글
클래스와 인스턴스의 차이? static 의 특징, new를 왜 써야 (0) | 2019.11.14 |
---|---|
자바 클래스? 객체지향? (0) | 2019.11.08 |
자바 변수의 초기화, 초기화 블럭 (0) | 2019.11.01 |
클래스변수, 인스턴스변수, 지역변수 (0) | 2019.10.04 |
오버로딩과 오버라이딩의 차이 (0) | 2019.09.27 |