필드(=속성 =멤버 =인스턴스 = Attribute =Property =컬럼 =column)의 값을 초기화시키는 기능을 가지고 있는 블록
인스턴스 필드 블록 형식 : {필드의 초기화 명령문; (static 필드, 인스턴스 필드)}
클래스 필드 블록 형식 : static{필드의 초기화 명령문; (static 필드)}
초기화 순서:
필드의 자동초기화값 -> 필드선언 시 초기값 바로 대입하는 경우( 명시적 초기화) -> 인스턴스 필드 블록 초기화값 ->
클래스 필드(static 필드) 블록의 초기화값 -> 생성자에게 초기화한 값 ->
setter 메소드로 초기화한 값(setter 메소드는 자동실행 안됨. 실행하려면 반드시 호출해야 함)
class Ex{
int a = 1;
} // 명시적 초기화
필드(=멤버=속성=Attribute =property =컬럼 =인스턴스 또는 클래스) 상수 예외 사항:
반드시 선언과 동시에 초기값 설정을 해주어야 하나, 생성자와 초기화블록 중 딱 한번은 초기값 설정을 할 수 있다.
class Ex{
final int MAX;
// 인스턴스 초기화 블록
}
{
MAX = 55;
}
// 생성자
Ex(){
MAX = 10;
}
class Ex{
static int a = 10; //(1번)
{a = 20;} //(2번)
static{a = 55;} //(3번)
Ex(){
a = 77; //(4번)
}
}