728x90
반응형
안녕하세요. 스마트 팩토리입니다.
자바 중급 021. 인스턴스 초기화 블럭, 정적 초기화 블럭(1) 에 대해 알아보겠습니다.
1. 인스턴스 초기화 블럭과 정적 초기화 블럭
가. 인스턴스 초기화 블럭
- 인스턴스가 생성될때 마다 호출
- 힙영역에 생성
나. 정적초기화 블럭
- 클래스 영역에 생성
- 한번만 수행되어 생성
다. 초기화 순서
(1) 클래스 변수 초기화 순서 .
- 기본값 --> 명시적 초기화 --> 클래스 초기화 블럭
(2) 인스턴스 변수 초기화 순서
- 기본값 --> 명시적 초기화 --> 인스턴스 초기화 블럭 --> 생성자
<< 객체가 1개 인 경우>>
인스턴스 초기화 블럭과 정적 초기화 블럭은 그 생성 순서를 아는 것이 중요합니다.
메인 메소드 에서 객체 즉 인스턴스가 생성될때 초기화 블럭이 생성되게 되는데 정적 초기화 블럭이 있는 경우는 그것이 가장 먼저 생성됩니다. 그 이후에 인스턴스 초기화 블럭, 그다음 생성자 순서로 생성됩니다.
package tstory21_01;
public class BlockEx {
{ System.out.println("인스턴스 초기화 블럭 실행됨");
}
static {
System.out.println("정적 초기화 블럭실행");
}
public BlockEx() {
System.out.println("생성자 호출");
}
public static void main(String[] args) {
BlockEx b1= new BlockEx();
// BlockEx b2= new BlockEx();
// BlockEx b3= new BlockEx();
}
}
<< 객체가 2개 인 경우>>
인스턴스가 2개인 경우 인스턴스가 1개인 경우와 비교해 보면 초기화 순서를 파악하는데 쉽습니다.
1. 정적초기화 블럭 --> b1 객체 생성이 되기 위해서 먼저 정적 초기화 블럭이 실행
2. 인스턴스 초기화 블럭
3. 생성자 호출
4. 인스턴스 초기화 블럭 -->b2 객체 생성되기 위해서 먼저 인스턴스 초기화블럭이 실행
5. 생성자 호출
package tstory21_01;
public class BlockEx {
{ System.out.println("인스턴스 초기화 블럭 실행됨");
}
static {
System.out.println("정적 초기화 블럭실행");
}
public BlockEx() {
System.out.println("생성자 호출");
}
public static void main(String[] args) {
BlockEx b1= new BlockEx();
BlockEx b2= new BlockEx();
// BlockEx b3= new BlockEx();
}
}
<< 객체가 3개 인 경우>>
인스턴스가 2개인 경우와 비교해보면 생각보다 어렵지 않습니다. 하지만 헷갈리면 코드를 작성해 보면서 익숙해 지는게 중요합니다.
b1 객체 생성 위해서
1. 정적 초기화 블럭 실행
2. 인스턴스 초기화 블럭
3. 생성자
b2객체 생성 위해서
4. 인스턴스 초기화 블럭
5. 생성자
b3객체 생성위해서
6. 인스턴스 초기화
7. 생성자.
package tstory21_01;
public class BlockEx {
{ System.out.println("인스턴스 초기화 블럭 실행됨");
}
static {
System.out.println("정적 초기화 블럭실행");
}
public BlockEx() {
System.out.println("생성자 호출");
}
public static void main(String[] args) {
BlockEx b1= new BlockEx();
BlockEx b2= new BlockEx();
BlockEx b3= new BlockEx();
}
}
728x90
반응형
'Java' 카테고리의 다른 글
자바 중급 023. 상속(inheritance) -부모클래스 , 자식클래스 관계(1) (0) | 2021.09.10 |
---|---|
자바 중급 022. 인스턴스 초기화 블럭, 정적 초기화 블럭,초기화 순서(2) (0) | 2021.09.09 |
자바 중급 020. 인스턴스 복사 생성자, 인스턴스 복제 (0) | 2021.09.06 |
자바 중급 019. this()- 생성자 , this-참조변수 (0) | 2021.09.06 |
자바 중급 018. this() 생성자에서 다른 생성자 호출 (0) | 2021.09.05 |
댓글