[JAVA] 변수의 초기화 순서 예제(초기화블럭)
@변수의 초기화 시점
- 변수는 클래스 변수와 인스턴스 변수로 나눠진다. (http://markim94.tistory.com/136 게시물의 2번내용 참고)
- 클래스 변수는 클래스가 처음 로딩될 때 한번만 초기화된다.
- 반면에 인스턴스 변수는 인스턴스가 생성될 때마다 인스턴스별로 초기화가 이뤄진다.
@예제
class Car{
int instanceVariable = 1; // 인스턴스 변수
static int staticVariable =1 ; // 클래스 변수(static, 공유)
// 인스턴스 초기화 블럭
{ instanceVariable = 2; }
// 클래스 초기화 블럭, 앞에 static이 붙음.
static{ staticVariable = 2; }
// 생성자, 인스턴스 변수 초기화 과정이 들어있음.
Car(){
instanceVariable = 3;
}
}
순서는 기본값->명시적초기화->초기화블럭->생성자(생성자는 인스턴스에만 해당)
# 클래스 변수 초기화
1) 해당 클래스가 처음 로딩될 때, staticVariable은 0으로 기본값을 갖는다.
2) 명시적 초기화 적용으로 staticVariable은 0->1이 된다.
3) 클래스 초기화 블럭에서 staticVariable은 1->2이 된다.
# 인스턴스 변수 초기화
1) 인스턴스 생성
2) 기본값으로 instanceVariable은 0이 된다.
3) 명시적초기화로 instanceVariable은 0>1이 된다.
4) 인스턴스초기화블럭에서 instanceVariable은 1->2이 된다.
5) 생성자에서 instanceVariable은 2->3이 된다.
반응형
'▶개발 > JAVA' 카테고리의 다른 글
[JAVA]날짜와 시간 클래스, Date의 Calendar간의 변환 (0) | 2019.01.25 |
---|---|
[JAVA] 자바 정리노트(3) (0) | 2018.12.19 |
[JAVA] 객체지향개념(오버로딩과 오버라이딩) (0) | 2018.12.18 |
[JAVA] 자바 정리노트(2) (0) | 2018.12.17 |
[JAVA] 자바 정리노트(1) (0) | 2018.12.17 |