변수의 초기화
1. 변수의 초기화
멤버변수(클래스 변수 & 인스턴스 변수)는 초기화 하지 않아도
자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어진다.
지역변수는 사용하기 전에 반드시 초기화해야 한다. (수동초기화)
class Practice {
int x; // 인스턴스 변수
int y = x; // 인스턴스 변수
void method1(){
int i; // 지역변수
int j = i; // error, 지역변수를 초기화하지 않고 사용.
}
}
자료형 | 기본값 |
boolean | false |
char | ‘\u0000’ |
byte, short, int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d 또는 0.0 |
참조형 변수 | null |
2. 명시적 초기화(explicit initialization)
- 간단 초기화
- 변수를 선언과 동시에 초기화하는 것
class Practice {
int weight = 55; // 기본형 (primitive type) 변수의 초기화
Practice1 p = new Practice1(); // 참조형 (reference type) 변수의 초기화
}
3. 초기화 블럭(initialization block)
- 복잡 초기화
클래스 초기화 블럭
클래스 변수의 복잡한 초기화에 사용된다. → static { }
클래스가 메모리에 처음 로딩될 때 한번만 수행된다.
static {
age = 20;
// static 블록에서는 필드를 초기화할 수 없다.
// name = "박현진";
}
인스턴스 초기화 블럭
인스턴스 변수의 복잡한 초기화에 사용된다. → { }
생성자와 같이 인스턴스를 생성할 때 마다 수행된다.
생성자 보다 인스턴스 초기화 블럭이 먼저 수행된다.
{
phoneName = "아이폰13";
price = 1190000;
// 인스턴스 블록에서는 클래스 변수도 초기화할 수 있다.
// brand = "삼성"; // static은 클래스로 접근해야 한다.
}
4. 멤버변수의 초기화 시기와 순서
초기화 시점
- 클래스 변수 : 클래스가 처음 로딩될 때 단 한번 초기화 된다.
- 인스턴스 변수 : 인스턴스가 생성될 때마다 각 인스턴스별로 초기화가 이루어진다.
초기화 순서
- 클래스 변수 : 기본값 → 명시적초기화 → 클래스 초기화 블럭
- 인스턴스 변수 : 기본값 → 명시적초기화 → 인스턴스 초기화 블럭 → 생성자
생성자를 이용한 초기화
public String getName() {
return name;
}
public static int getAge() {
return age;
}
public String getPhoneName() {
return phoneName;
}
public int getPrice() {
return price;
}
public static String getBrand() {
return brand;
}
'Java' 카테고리의 다른 글
객체(Object) - 오버라이딩(overriding) (0) | 2022.09.20 |
---|---|
객체(Object) - 상속(inheritance) (0) | 2022.09.19 |
객체(Object) - 생성자(Constructor) (0) | 2022.08.24 |
객체(Object) - 오버로딩(Overloading) (0) | 2022.08.23 |
객체(Object) - 변수와 메서드 (0) | 2022.08.23 |