Java 기초가 부족하다면 이런 경험 해봤을 것이다
- 변수를 선언하고 초기화를 안해도 에러가 안나는데 어쩔 땐 초기화를 안하면
에러가 발생한다.- 변수가 생기는 시점이 언제지..?, 변수 초기화는 어떻게 하는게 좋지..?
이 글을 읽고 초기화에 대한 이해와 규칙을 익히면 좋겠다.
멤버 변수는 초기화 하지않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화
지역 변수는 사용하기 전에 반드시 초기화 해야 한다
class InitTest{
int x; // 인스턴스 변수
int y = x; // 인스턴스 변수
void method(){
int i; // 지역 변수
int j = i; // 에러. 지역변수를 초기화 하지 않고 사용
}
}
변수의 선언과 동시에 초기화 하는 것
class Car{
int door = 4; // 기본형 변수 초기화
Engine e = new Engine(); // 참조형 변수 초기화
}
가장 간단하고 명료한 방법
class Init{
static{// 클래스 초기화 블럭}
{// 인스턴스 초기화 블럭}
}
클래스가 메모리에 로딩 될 때 한번만 수행
중복을 제거해주는 장점
-> 객체지향프로그래밍의 목표Car(){
count++;
num = count;
color = "white"
}
Car(String color){
count++;
num = count; // 기본생성자와 생성자간의 중복 발생
this.color = color;
}
위와 같은 코드를 인스턴스 초기화 블럭을 사용하여
{
count++;
num = count;
}
Car(){
color = "white";
}
Car(String color){
this.color = color;
}
이처럼 코드의 중복을 제거하고 오류의 발생 가능성을 줄여줄 수 있다
프로그램 실행도중 클래스에 대한 정보가 요구될 때, 클래스는 메모리에 로딩된다
해당 클래스가 이미 메모리에 로딩되어 있다면, 또 다시 로딩하지 않고, 초기화 하지 않는다
인스턴스 변수 int i = 20의 경우,
그동안 나는 i값에 바로 20이 들어가는줄 알았지만 기본값 0이 들어가고 20으로 초기화 되는 것을 알게되었다.
이렇게 기본적인 것을 다시 짚어볼 수 있는 시간이어서 좋은 시간이었다 :)
Java의 정석(남궁성)