변수는 선언 위치에 따라 사용 가능 범위가 정해진다. 이 규칙을 제대로 알지 못하면 “변수를 찾을 수 없다”는 컴파일 에러를 자주 만나게 된다.
{ }) 스코프 규칙모든 변수는 선언된 중괄호 { } 블록 내에서만 유효하며, 블록이 끝나면 메모리에서 소멸된다.
if, for, while 등 제어문 블록 안에서 선언된 변수는 해당 제어문 밖에서는 사용할 수 없다.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 블록이 끝나서 사라짐)
}
안쪽 블록에서는 바깥쪽 블록에 선언된 변수에 접근할 수 있지만, 반대로 바깥쪽에서는 안쪽의 변수를 볼 수 없다.
for문의 초기화 식에서 선언된 변수는 for문 블록 내부에서만 사용할 수 있다.
for (int i = 0; i < 5; i++) {
// i는 여기서만 생존
}
// System.out.println(i); // 에러! i는 이미 소멸됨