[Java] 변수의 초기화
by Choi HyeSun
변수의 초기화 - 정의
-
변수를 선언하고 처음으로 값을 저장하는 것
-
가능하면 선언과 동시에 적절한 값으로 초기화하는 것이 바람직
-
변수에 따라 필수여부가 다름
-
멤버변수 : 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화
-
지역변수 : 사용하기 전에 반드시 초기화해야 함. 초기화 하지 않으면 컴파일시 에러 발생
-
-
같은 타입의 변수는 콤마’,’를 사용해서 함께 선언하거나 초기화 할 수 있음
- 타입이 다를 경우는 안 됨
각 타입의 기본 값
자료형 | 기본값 |
---|---|
boolean | false |
char | ‘\u0000’ |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
참조형 변수 | null |
멤버변수의 초기화 종류
-
명시적 초기화(explicit initalization)
-
생성자(constructor)
-
초기화 블럭(initialization block)
명시적 초기화
-
변수를 선언과 동시에 초기화
-
가장 기본적이면서도 간단한 초기화 방법
-
기본형(primitive type) 변수의 초기화
- 타입 변수명 = 값;
-
참조형(reference type) 변수의 초기화
-
클래스명(타입) 변수명 = new 클래스명(타입)();
-
클래스명(타입) 변수명 = new 클래스명(타입)(argument…);
-
초기화 블럭
-
종류
-
클래스 초기화 블럭 : 클래스 변수의 복잡한 초기화에 사용
-
인스턴스 초기화 블럭 : 인스턴스 변수의 복잡한 초기화에 사용
-
-
사용방법
-
클래스 초기화 블럭 : 인스턴스 초기화 블럭 앞에 단순히 static을 붙이면 됨
-
인스턴스 초기화 블럭 : 클래스 내부에 블럭 { }을 만들고 그 안에 코드를 작성하면 됨
-
-
특징
-
초기화 블럭 내에는 메서드 내에서와 같이 조건문, 반복문, 예외처리 구문 등을 자유롭게 사용할 수 있음
-
초기화 작업이 복잡하여 명시적 초기화만으로는 부족한 경우 사용
-
-
수행
-
클래스 초기화 블럭 : 클래스가 메모리에 처음 로딩될 때 한 번만 수행됨
클래스가 처음 로딩될 때 클래스변수들이 자동적으로 메모리에 만들어지고, 곧바로 클래스 초기화블럭이 클래스 변수들을 초기화 -
인스턴스 초기화 블럭 : 생성자와 같이 인스턴스를 생성할 때마다 수행됨
생성자보다 인스턴스 초기화 블럭이 먼저 수행됨
-
-
인스턴스 초기화 블럭
-
모든 생성자에서 공통적으로 수행되어야 하는 코드를 넣을 때 사용
-
인스턴스 변수의 복잡한 초기화는 주로 생성자를 사용하는데, 이 부분이 중복될 때 통합
-
-
코드의 중복을 제거하면
-
코드의 신뢰성이 높아짐
-
오류 발생가능성이 낮아짐
-
멤버변수의 초기화 시기와 순서
-
초기화 시점
-
클래스변수 : 클래스가 처음 로딩될 때 1번
-
인스턴스변수 : 인스턴스가 생성될 때마다 각 인스턴스별로 초기화
-
-
초기화 순서
-
클래스변수 : 기본값 → 명시적초기화 → 클래스 초기화 블럭
-
인스턴스변수 : 기본값 → 명시적초기화 → 인스턴스 초기화 블럭 → 생성자
-
Subscribe via RSS