Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 조건부 블록에서 지역 변수 초기화의 동작 원리

Java 컴파일러는 초기화되지 않은 지역 변수를 그대로 두는 것을 허용하지 않습니다. 지역 변수가 조건부 블록 내부에서 초기화되는 경우, 다음과 같은 세 가지 상황이 발생할 수 있습니다.

  • 조건부 블록 안에 값이 직접 제공되고, 주어진 조건이 참(true)이라면 코드는 정상적으로 컴파일됩니다.

  • 조건부 블록 안에 값 대신 변수가 사용되고, 조건이 참(true)이라면 컴파일 오류가 발생합니다.

  • 검사하려는 조건이 거짓(false)이라면 컴파일 오류가 발생합니다.

반면, 조건부 블록 외부에서 지역 변수를 기본값으로 미리 초기화해두면 어떠한 오류도 발생하지 않으며 코드가 정상적으로 컴파일됩니다.

예제

public class Demo{
    public static void main(String args[]){
       int i = 35;
       int j = 0;
       if (i > 32){
          j = i + 11;
       }
       System.out.println("The value is: " + j);
   }
}

출력 결과

The value is: 46

코드 설명

위 예제에서는 Demo라는 이름의 클래스가 정의되어 있고, 그 안에 main 메서드가 포함되어 있습니다. 먼저 두 개의 정수형 지역 변수 ij가 선언되며, j는 조건부 블록 밖에서 기본값인 0으로 초기화됩니다.

이후 if 문을 통해 i가 32보다 큰지 검사하고, 조건이 참이면 i에 11을 더한 값을 j에 할당합니다. 여기서 j가 미리 초기화되어 있기 때문에 조건이 거짓이 되더라도 컴파일러는 오류를 발생시키지 않습니다.

마지막으로 계산된 결과가 콘솔에 출력되며, 위 예제에서는 35 + 11인 46이 출력됩니다.

정리

Java에서 지역 변수는 반드시 사용 전에 초기화되어야 합니다. 특히 조건부 블록(if문 등) 내부에서만 값을 할당하는 경우, 해당 조건이 실행 시점에 평가되기 전까지 컴파일러는 변수가 확실하게 초기화되었는지 보장할 수 없습니다. 따라서 조건문 외부에서 기본값을 설정해두는 것이 안전하고 권장되는 코딩 습관입니다.