Mingyu Kim

변수 사용 범위

변수는 선언 위치에 따라 사용 가능 범위가 정해진다. 이 규칙을 제대로 알지 못하면 “변수를 찾을 수 없다”는 컴파일 에러를 자주 만나게 된다.

1. 블록({ }) 스코프 규칙

모든 변수는 선언된 중괄호 { } 블록 내에서만 유효하며, 블록이 끝나면 메모리에서 소멸된다.

public static void main(String[] args) {
  int mainVar = 10; // main 메소드 전체에서 사용 가능

  if (mainVar > 5) {
    int ifVar = 20; // if 블록 안에서만 사용 가능
    System.out.println(mainVar + ifVar); // 가능
  }

  System.out.println(mainVar); // 가능
  // System.out.println(ifVar); // 에러 발생! (if 블록이 끝나서 사라짐)
}

2. 중첩 블록에서의 범위

안쪽 블록에서는 바깥쪽 블록에 선언된 변수에 접근할 수 있지만, 반대로 바깥쪽에서는 안쪽의 변수를 볼 수 없다.

3. 반복문(for)에서의 주의사항

for문의 초기화 식에서 선언된 변수는 for문 블록 내부에서만 사용할 수 있다.

for (int i = 0; i < 5; i++) {
  // i는 여기서만 생존
}
// System.out.println(i); // 에러! i는 이미 소멸됨

4. 변수 선언 시 주의할 점

  1. 사용 범위 최소화: 변수는 가급적 사용하는 곳과 가장 가까운 위치에서 선언하고, 범위를 좁게 유지하는 것이 좋다. 그래야 메모리 효율도 좋아지고 버그도 줄어든다.
  2. 이름 중복: 동일한 블록 내에서는 같은 이름의 변수를 선언할 수 없다. (단, 사용 범위가 겹치지 않는다면 다른 블록에서 같은 이름을 쓰는 것은 가능)