java field initialization 자바 필드 초기화

java field initialization 자바 필드 초기화


■ 자바에서 필드(변수)는 두 가지 형식이 있는데 필드는 선언하는 위치에 따라서 전역변수와 지역변수가 있다. 이 둘은 메모리상에서 할당되는 위치가 다른데 전역변수는 멤버 변수로서 "Gabage Collection Heap" 영역에 할당되고, 지역변수는 "Runtime Stack" 영역에 할당된다. 이렇게 할당된 필드 중에서 지역변수로써 Runtime Stack" 영역에 할당된 필드는 자동으로 초기화가 되지 않는다. 그렇기 때문에 지역변수를 선언하면 무조건 초기화를 해줘야 하며 그렇지 않으면 에러가 발생한다. 반대로 Gabage Collection Heap 영역에 할당된 전역변수는 "0"으로 자동 초기화가 이루어진다. 


 

 

 이 내용을 확인하기 위해서 간단한 예제를 하나 만들어본다.

▲ 메서드 안에 int형 지역변수 a를 할당하고 초기화를 하지 않은 상태에서 변수의 값을 출력하고 있다. 


▲ 앞에서 언급한 대로 당연히 에러가 발생한다. 에러 내용은 지역변수로 선언된 'a'가 초기화되지 않았다는 내용이다. 이렇게 지역변수는 초기화하지 않으면 에러가 발생한다는 사실을 확인했다. 


 

 

 다음은 전역변수를 선언하고 "0"으로 초기화되는지 확인해본다.

▲ 예제 내용을 확인해보면 메서드 안쪽의 지역변수가 아니고 클래스의 멤버로써 int a 전역변수를 할당하고 있다. Day01 의 멤버로써 a 변수의 값을 출력하기 위해서 Day01 클래스의 객체를 만들어서 변수의 값을 출력하고 있으며.... 결과값으로 "0"이 출력된 걸 확인할 수 있다. 결과에서 보듯이 전역변수는 초기화하지 않아도 에러가 발생하지 않는다.


 이렇게 해서 자바의 필드(Field)의 선언 위치에 따라서 초기화 되는지 여부를 확인 해봤다.