2010. 3. 25. 16:06ㆍprogramming/java
변수를 선언하고 처음으로 값을 저장하는 것을 "변수의 초기화"라고 한다. 변수의 초기화는 경우에 따라서 필수적이기도 하고 선택적이기도 하지만, 가능하면 선언과 동시에 적절한 값으로 초기화 하는 것이 바람직하다.
멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어지므로 초기화를 하지 않고 사용해도 되지만 지역변수는 사용하기 전에 반드시 초기화를 해야 한다.
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를 초기화 하는데 사용될 수 없기 때문에
컴파일시에 에러가 발생한다.
[참고]각 자료형의 기본값은 아래와 같다.
변수의 초기화에 대한 예를 몇 가지 더 들어보자.
멤버변수의 초기화에는 생성자 이외에도 명시적 초기화와 초기화블럭을 이용한 방법이 있다.
이처럼 멤버변수의 초기화는 지역변수와 달리 여러가지 방법이 있다. 앞으로 멤버변수의 초기화에 대한 모든 방법에 대해 비교, 정리할 것이다.
멤버변수의 초기화 방법 1. 명시적 초기화(Explicit initailization) 2. 생성자(Constructor) 3. 초기화 블럭(Initialization block) - 인스턴스 초기화 블럭 : 인스턴스변수를 초기화 하는데 사용. - 클래스 초기화 블럭 : 클래스변수를 초기화 하는데 사용. |
변수를 선언과 동시에 초기화하는 것을 명시적 초기화라고 한다. 가장 기본적이면서도 간단한 초기화 방법이므로 여러 초기화 방법 중에서 가장 우선적으로 고려되어야 한다.
class Car { int door = 4; // 기본형(primitive type) 변수의 초기화 Engine e = new Engine(); // 참조형(reference type) 변수의 초기화 //... } |
명시적 초기화가 간단하고 명료하긴 하지만,
보다 복잡한 초기화 작업이 필요할 때는
"초기화 블럭(initialization block)" 또는 생성자를 사용해야한다.
'programming > java' 카테고리의 다른 글
메모장으로 아스키 코드값 알아내기!! (0) | 2010.04.07 |
---|---|
[Java] 형변환 ( int, double, long ... <-> String ) (0) | 2010.04.06 |
class 앞에 public < 접근제한자 > (1) | 2010.03.25 |
자바(Java Programming Language) (0) | 2010.03.23 |
자바 시작하기 (0) | 2010.03.19 |