Java

Java 함수에서 지역 변수를 초기화하지 않아도 되는 경우

지니♥︎ 2024. 8. 1. 06:00

🤔 오늘의 궁금증

public int add(int num1, int num2) {
    int sum; // 변수 선언, 초기화되지 않음
    sum = num1 + num2; // 변수에 값 할당
    return sum; // 변수 반환
}

 

위와 같은 간단한 함수를 작성하다가 궁금증이 생겼다.

 

int sum;으로 sum 변수를 선언만 하고 초기화는 하지 않은 코드에서

 

지역 변수는 수동초기화를 해야 하는 걸로 아는데,

초기화를 하지 않아도 문제가 없는 걸까?

 


📖 지역변수 초기화

Java에서 지역 변수는 명시적으로 초기화되지 않으면 사용할 수 없다.

컴파일러는 초기화되지 않은 변수를 사용하려고 할 때 오류를 발생시킨다.

 

즉, 지역 변수를 초기화 하지 않으면 컴파일 오류가 발생하는 것이 일반적이다.

 

그러나 특정 상황에서는 초기화가 필요 없는 경우가 있다.

변수가 명확하게 값을 할당받는 경우

초기화를 하지 않고 선언만 하여도

컴파일 오류 없이 정상적으로 동작한다.

 


🤔 왜 초기화하지 않아도 문제가 없는가?

1. 명확한 값 할당 :

  • `sum` 변수는 선언 후 `num1 + num2` 로 명확하게 값을 할당 받는다.
  • 따라서, `sum` 변수는 실제로 사용되기 전에 값을 가지게 된다.

2. 컴파일러의 분석 :

  • Java 컴파일러는 코드의 흐름을 분석하여
    모든 실행 경로에서 변수가 사용되기 전에 값이 할당되는지 확인한다.
  • 위 함수에서 `sum` 변수는 항상  `num1 + num2` 로 값을 할당받고 나서 사용되기 때문에,
    컴파일러 오류 없이 정상적으로 동작한다.

💡 정리

  • 지역 변수는 사용하기 전에 반드시 초기화되어야 한다.
  • 초기화되지 않은 변수를 사용하려고 하면 컴파일 오류가 발생한다.
  • 그러나 변수에 명확하게 값을 할당하는 경우,
    컴파일러는 코드흐름을 분석하여 초기화되지 않은 변수의 경우에도 오류가 발생하지 않는다.
  • 다만, 변수 사용 전에 항상 값을 할당하여 초기화를 하는 것이 좋다.

➕참고

[Java] - Java에서 변수 초기화란?