필드 (Field) - 초기화

DONI·2021년 8월 18일
0

Java

목록 보기
28/46
post-thumbnail

🏹 초기화 블록

클래스 필드의 초기화만을 담당하는 중괄호로 둘러싸인 블록
생성자보다 먼저 호출되며, static 키워드의 유무에 따라 구분됨

  • 인스턴스 블록 ( { } )
    : 인스턴스 변수를 초기화 시키는 블록 (인스턴스가 생성될 때마다 실행)

  • 클래스(static) 블록 ( static{ } )
    : static 필드를 초기화 시키는 블록 (프로그램이 시작될 때 한 번만 실행)

⭐ 인스턴스 블록은 생성자와 차이가 거의 없어 잘 사용되지 않지만, 여러 개의 생성자에서 공통으로 수행되어야 하는 코드가 있을 때 인스턴스 블록에 포함하면 코드의 중복을 제거함으로써 신뢰도를 높이고, 오류의 발생 가능성을 줄일 수 있다.


🏹 초기화 순서

  • 클래스 변수
    JVM 기본값 ➡ 명시적 초기값 ➡ 클래스 초기화 블록 초기값

  • 인스턴스 변수
    JVM 기본값 ➡ 명시적 초기값 ➡ 인스턴스 초기화 블록 초기값 ➡ 생성자를 통한 초기값

    🌼 JVM(Java Virtual Machine) : 자바 가상 머신


🚩 소스코드

package kh.oop1.day03.exam;
public class BlockExam {
	public static String name = "홍길동";
	
	public BlockExam() {
		System.out.println("생성자 영역");
	}
	
	int age = 19;
	static {
		System.out.println("static block 영역");
		name = "박길동";
	}
	
	{
		System.out.println(age);
		System.out.println("인스턴스 블록1");
		this.age = 22;
		System.out.println(age);
	}
	
	{
		System.out.println("인스턴스 블록2");
	}
	
}
package kh.oop1.day03.run;
import kh.oop1.day03.exam.BlockExam;
public class Run {
	public static void main(String[] args) {
		BlockExam be = new BlockExam();
		System.out.println(be.name);
	}

}

🧶 출력 결과

static block 영역
19
인스턴스 블록1
22
인스턴스 블록2
생성자 영역
박길동

profile
틀린 내용이 있다면 댓글 또는 이메일로 알려주세요 ❤ꔛ❜

0개의 댓글