Post

Java 문법 (2) - 변수

Java 문법 (2) - 변수




자바의 변수 초기화


자바에서 변수를 선언하고 초기화하지 않고 출력하려고 하면 "java: variable a might not have been initialized" 라는 오류메시지가 나타납니다. 이 오류메시지는 변수를 초기화하지 않았다는 것을 알려주는데요. 컴퓨터의 메모리는 여러 시스템이 공유하는 자원으로, 다양한 값들이 저장됩니다. 변수를 선언하면 메모리 상에 일정 공간을 차지하게 되는데, 이 공간은 이전에 다른 값이 저장되었던 곳일 수 있습니다. 그 공간에 어떤 값이 있었는지 알 수 없기 때문에 초기화하지 않은 변수의 공간에는 쓰레기값이 남아있습니다. 이러한 쓰레기값으로 인해 예상치 못한 결과가 출력될 수 있으므로, 이를 방지하기 위해 자바는 변수의 초기화를 강제합니다.

1
2
3
4
5
6
7
8
package variable;  
  
public class Var6 {  
    public static void main(String[] args) {  
        int a;  
        System.out.println(a); // 에러 : "java: variable a might not have been initialized"
    }  
}


그렇다면 변수의 초기화를 강제하지 않는 언어에서는 어떻게 될지 궁금해서 C언어에서 Java 예시코드와 같은 코드를 작성하고 실행시켜 봤습니다.


1
2
3
4
5
6
#include <stdio.h>
int main(){
	int a;
	printf("%d",a);
	return 0;
}


아래 이미지와 같이 예상할 수 없는 값들이 출력되는 것을 확인할 수 있었습니다. 이는 예측 불가능한 결과를 나타낼 수 있기 때문에, 변수를 사용하기 전에 항상 초기화하는 것을 습관화 해야합니다.


image