[JAVA] 자바 - 인스턴스/static 초기화 블록 의미
by mini_min[JAVA]
자바 - 인스턴스 초기화 블록
static 초기화 블록
초기화 블록이란 것이 있다!
1) 객체가 생성될 때마다 초기화되는 초기화 블록
2) 클래스가 로딩될 때 한 번 초기화되는 초기화 블록
2가지 종류는 각각 인스턴스 초기화 블록, static 초기화 블록이라고 불림
✔️ 초기화 블록 형태
//인스턴스 초기화 블록
{
//인스턴스 초기화 블럭(객체가 실행될때마다 여러번 실행!)
d = 5;
}
//static 초기화 블록
static {
//static 초기화 블럭(클래스 로딩될 때 딱 1번 실행)
d = 5;
}
✔️ 초기화 블록 실행단계
⭐ 객체를 생성할 때마다 실행
1) new를 통해 메모리 할당. -> 객체를 위한 메모리 할당(인스턴스 변수의 메모리 할당) : a,b,c,d 메모리할당
2) 모든 인스턴스 변수는 디폴트 값으로 초기화 : a=0 b=0 c=0 d=0
3) 초기화 수식이 있으면 초기화 수식으로 초기화 : b<-수식 값 n (명시적 초기화)
4) 초기화 블럭이 있으면 초기화 블럭 실행해서 초기화 작업 (여러번 가능)
⭐ 클래스가 로딩될 때 한번 실행
1) 클래스 변수 메모리 할당(메소드 영역에 할당) : x,y
2) 클래스 변수를 디폴트 값으로 초기화 : x=0, y=0
3) 초기화 수식을 실행 : x<-10 (명시적 초기화)
4) static 초기화 블럭이 있으면 초기화 블록 실행해서 초기화 작업 (1번 실행)
5) 생성자 몸체를 실행한다.
(1) 생성자 몸체의 super([인수]); 또는 this([인수]) 실행
(2) 생성자 몸체를 실행
✔️ 초기화 블록 + final 변수
public static void main(String[] args) {
System.out.println(Test10.PI); //클래스 메소드
}
class Test10 {
public static int a = 10; //클래스 변수
// final 변수 : 상수! 한번만 초기화 되며 값을 변경 할 수 없음
public final static double PI = 3.141592; //final 변수!
public final static int x; //컴파일 오류. final 변수는 반드시 초기화가 필요
static {
x = 10;
}
◾ final 변수는 한 번만 초기화 되는 변수로, 이후 값을 변경할 수 없다. 또한 반드시 초기화가 필요하다.
만약, public final static int x; 이렇게 final 변수에 초기화 값 없이 작성하면 컴파일 오류가 뜬다. 위에 코드에서 컴파일 오류가 뜨지 않은 것은, 바로 아래 <static 초기화 블록> 에서 final static x의 초기화 값을 줬기 때문이다!
💡 final 초기화 값은 반드시 필요! 한 번 초기화된 값은 변경이 불가하다.
static final 변수는 생성자에서 초기화 불가능!! 계속 객체 만들면서 초기화가 될 수 있기 때문에
'Java' 카테고리의 다른 글
[JAVA] 자바 - 기본 API 클래스 (import, static import, object, equals) (0) | 2022.07.20 |
---|---|
[JAVA] 자바 - singleton(싱글톤) 과 getInstance (0) | 2022.07.20 |
[JAVA] 자바 - this 의미와 사용법 (0) | 2022.07.20 |
[JAVA] 자바 - arraycopy (배열 복사)란 무엇? (예문) (0) | 2022.07.20 |
[JAVA] 자바 - 생성자 + 객체 생성 순서는? (0) | 2022.07.20 |
블로그의 정보
개발자 미니민의 개발로그
mini_min