JAVA/수업 복습

자바 공부기록 42 - 초기화 블럭

본이qq 2022. 4. 28. 18:33

●초기화 블럭

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class StaticE{
    private int number;
    private static int num=1;
 
    {
        number = 100;
        System.out.println("인스턴스 변수 초기화용 초기화 블럭1");
    }
 
public class Class26 {
 
    public static void main(String[] args) {
        StaticE f = new StaticE();
 
    }
 
}
 
cs

 일반 초기화 블럭 : 객체 생성시 실행(생성자와 성격이 비슷)
 단순 값으로 초기화하는 경우 대입연산자를 통해서 처리할 수 있지만,
 실행문이 포함된 초기화를 진행하는 경우 위와 같이 초기화 과정을 정의할 수 있음 { } 안에 내용을 쓴다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class StaticE{
    private int number;
    private static int num=1;
 
    static {        
        System.out.println("StaticF의 static 블럭 실행");
        num = 55;
        
    } //static 블럭은 객체 생성 이전에 실행됩니다.public class Class26 {
 
    public static void main(String[] args) {
        StaticE f = new StaticE();
 
    }
 
}
 
cs

static 초기화 블럭 : static 멤버를 초기화하기 위한 영역
단순 값으로 초기화하는 경우 대입연산자를 통해서 처리할 수 있지만
실행문이 포함된 초기화를 진행하는 경우 위와 같이 초기화 과정을 정의할 수 있음 static{} 안에 내용을 쓴다.

static 블럭은 객체 생성 전에 이미 실행이 되기 때문에

출력값에서 다른 인스턴스 블럭들보다 먼저 출력이 된다.

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class StaticE{
    static int cnt=0;    
    int serialNo;
    {
        ++cnt;
        serialNo = cnt;
        System.out.println("인스턴스 변수 초기화용 초기화 블럭2");
    }    
 
    public static void main(String[] args) {
            StaticE f = new StaticE();
 
    }
 
}
 
cs

->일반 초기화블럭에서는 스태틱 멤버에 자유롭게 접근이 가능합니다

->but 스태틱 초기화 블럭에서 인스턴스 멤버접근은 제한됩니다.