변수의 초기화
멤버변수와 배열의 초기화는 선택적이지만, 지역변수의 초기화는 필수적이다.
멤버변수의 초기화 방법
- 명시적 초기화
- 생성자
- 초기화 블럭
명시적 초기화
: 변수를 선언과 동시에 초기화 하는 것
초기화 블럭
클래스 초기화 블럭 | 클래스변수의 복잡한 초기화에 사용 |
인스턴스 초기화 블럭 | 인스턴스변수의 복잡한 초기화에 사용 |
- 클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 한번만 수행
- 인스턴스 초기화 블럭은 생성자와 같이 인스턴스를 생성할 때 마다 수행
- 생성자 보다 인스턴스 초기화 블럭이 먼저 수행
class BlockTest {
static {
System.out.println("static { }");
}
{
System.out.println("{ }");
}
public BlockTest() {
System.out.println("생성자 ");
}
public static void main(String[] args) {
System.out.println("blocktest bt = new blocktest(); ");
BlockTest bt=new BlockTest();
System.out.println("blocktest bt2 = new blocktest(); ");
BlockTest bt2 = new BlockTest();
}
}
/*
실행결과
static { }
BlockTest bt = new BlockTest();
{ }
생성자
BlockTest bt2 = new BlockTest();
{ }
생성자
멤버변수의 초기화 시기와 순서
클래스변수의 초기화시점 | 클래스가 처음 로딩될 때 단 한번 초기화 |
인스턴스변수의 초기화시점 | 인스턴스가 생성될 때마다 각 인스턴스별로 초기화 |
클래스변수의 초기화순서 | 기본값 > 명시적초기화 > 클래스 초기화 블럭 |
인스턴스변수의 초기화순서 | 기본값 > 명시적초기화 > 인스턴스 초기화 블럭 > 생성자 |
'Language > java' 카테고리의 다른 글
Java_Study 객체지향 프로그래밍 (오버라이딩) (0) | 2022.07.04 |
---|---|
Java_Study 객체지향 프로그래밍 (상속) (0) | 2022.07.03 |
Java_Study 객체지향 프로그래밍 (생성자) (0) | 2022.07.01 |
Java_Study 객체지향 프로그래밍 (오버로딩) (0) | 2022.07.01 |
Java_Study 객체지향 프로그래밍 (변수와 메서드) (0) | 2022.06.29 |
댓글