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 스태틱 초기화 블럭에서 인스턴스 멤버접근은 제한됩니다.