cf)변수란 데이터(data)를 저장할 수 있는 메모리 공간을 의미한다.
변수를 선언하고 처음으로 값을 저장하는 것을 '변수의 초기화'라고 한다.
int i = 30;
변수의 초기화는 경우에 따라서 필수적이기도 하고 선택적이기도 하다.
하지만 가능하면 선언과 동시에 적절한 값으로 초기화하는 것이 바람직하다!
멤버변수(클래스 변수(static), 인스턴스(객체) 변수) 초기화 : 초기화를 하지 않아도 자동적으로 변수의 자료형의 기본값으로 초기화가 이루어짐.
cf)맴버 변수 : 메소드 밖에서 선언된 변수
지역변수 초기화 : 사용하기 전에 반드시 초기화해야 한다.
cf)지역 변수 : 지역 변수는 메소드 안에서 선언된 변수이다. 해당 메서드에서만 사용 가능. 메소드 실행시 메모리에 생성되어 메서드 종료시 자동 삭제. 메소드 내 어디서든 호출 가능. 단, 선언한 다음 사용함.
class InitTest {
int x; // 인스턴스 변수
int y = x; // 인스턴스 변수
void method1 (){
int i;
int j = i;
}
}
위와 같이 코드를 작성하면 에러가 발생한다.
x, y는 인스턴스 변수이고, i, j는 지역변수이다.
그중 x와 i는 선언만 하고 초기화를 하지 않았다.
그리고 y를 초기화하는 데 x를 사용하였고, j를 초기화하는 데 i를 사용하였다.
인스턴스 변수 x는 초기화를 해주지 않아도 자동적으로 int형의 기본값이 0으로 초기화되므로, 'int y = x;'와 같이 할 수 있다.
x의 값이 0이므로 y 역시 0이 저장된다.
method1()의 지역변수 i는 자동적으로 초기화되지 않으므로, 초기화되지 않은 상태에서 변수 j를 초기화하는 데 사용될 수 없다.
멤버 변수와 배열의 초기화는 선택적이지만, 지역변수의 초기화는 필수적이다.