My work space/Java

[아시나요?]변수의 초기화

schpritz 2008. 8. 14. 17:38

하나의 프로그램을 만들기 위해서는 많은 수의 변수를 사용하게 된다. 또한 이들 변수는 사용되는 위치에 따라 필드(멤버 변수)와 지역변수라는 이름으로 구분된다. 변수는 프로그램에서 사용하게 될 데이터를 저장하고 있으므로 언제나 유효한 값만을 가지고 있어야 한다. 만일 변수가 유효하지 않은 데이터를 가지고 있다면 프로그램은 잘못된 연산을 수행하게 된다. 이런 결과를 최대한 줄이기 위해서 자바에서 사용하는 모든 변수는 사용하기 전에 반드시 초기값을 설정해 주어야 한다.


/* 변수를 사용하기 전에 반드시 초기값을 설정해야 한다.*/

private int i = 0;

private String name = "honggildong"

private double d;

d = 43.2;


그런데 다음과 같이 초기값을 설정하지 않아도 프로그램에서 변수를 사용할 수 있는 경우가 있다.


public class Init{

       private int iVar;                           //초기값 설정하지 않음

       private String sVar;                      //초기값 설정하지 않음


       public voids printVar(){

                System.out.println(iVar);        //사용가능

                System.out.println(sVar);       //사용가능

       }

}


앞과 같이 변수에 대한 초기화를 수행하지 않고도 printVar()메소드에서 사용이 가능한 것은 필드가 명시적으로 초기화 하지 않았을 때 자동으로 초기화가 되기 때문이다. 앞에서 초기화를 수행하지 않은 변수 iVar는 0으로 sVar는 null로 초기화가 이루어지게 된다. null은 앞에서도 잠시 언급했지만 객체에 사용하게 되면 아무런 객체도 참조하지 않는다는 의미이다. 다음 표에 변수의 타입별로 자동으로 초기화되는 값을 정리해 놓았다.


String을 포함한 자바의 모든 객체는 null로 초기화 된다. 다시 한번 말하지만 이렇게 자동으로 초기화되는 변수는 필드일 경우에만 해당되는 것이다. 지역 변수는 자동으로 초기화되지 않기 때문에 사용하기 전에 반드시 면시적인 변수의 초기화 작업을 수행해야만 한다.  



자동으로 초기호되는 변수의 값

 데이터 형  값
 byte  0
 short  0
 int  0
 long  0
 float  0.0
 double  0.0
 boolean  false
 char  NUL(아무 값도 갖지 않는다)
 String  null
 모든 객체  null