이병록의 개발 블로그

[코드라떼] 자바 프로그래밍 - 스코프 본문

자바 프로그래밍 강의

[코드라떼] 자바 프로그래밍 - 스코프

이병록 2026. 1. 31. 17:22

목차

  1. 스코프
  2. [실습해보기] 스코프를 느껴보자

1.스코프(scope)

스코프(scope) 는 변수에 접근하기 위한 유효범위를 말하며 중괄호 내부를 하나의 범위로 볼 수 있습니다. 스코프의 특성은 범위 내에서는 범위 외부에 선언된 변수에 접근할 수 있으나 범위 외부에서는 범위 내부에 선언된 변수에 접근할 수 없습니다. 어려운 개념이 아닙니다.

먼저 변수의 접근이란 변수를 읽거나 저장할 수 있는 것을 말하며 기본적으로 같은 범위 내에서는 변수에 접근할 수 있습니다.

그러나 외부 범위에서는 내부 범위에 있는 변수에 접근할 수 없습니다.

반복문의 내부 범위에서는 외부 범위에 있는 변수에 접근할 수 있습니다.

조건문의 내부 범위에서도 외부 범위에 있는 변수에 접근할 수 있습니다.

조건문 내부에서는 외부 범위인 box 변수에 접근할 수 있고, chickenBox 변수에 접근할 수 있으나 외부 범위에서는 내부 범위에 선언된 number 변수나 chickenBox 변수에 접근할 수 없습니다.

반복문 내부에 있는 변수는 반복문이 실행될 때마다 초기화를 반복합니다.

2. [실습해보기] 스코프를 느껴보자

실습도구에 해당 코드를 작성해 봅시다

case 1

코드 작성

// 실행할 수 없는 코드. 어떤 에러가 나올까요?

int box = 1;
if (true) {
    int chickenBox = 5; 
    System.out.println(chickenBox);
}
chickenBox = 10;
System.out.println(chickenBox);

출력
[직접 작성후 확인해보세요]

case 2

코드 작성

// 실행할 수 없는 코드. 어떤 에러가 나올까요?

int box = 1;
if (true) {
    int chickenBox = 20;
    if (true) {
        int number = 0;
        int result = box + number + chickenBox;
    }
    number = 1;
}
chickenBox = 10;

출력
[직접 작성후 확인해보세요]

case 3

코드 작성

// 실행할 수 없는 코드. 어떤 에러가 나올까요?

int x = 0; // 상위
while (x < 20) {
    int x = 1; // 하위
    System.out.println(x);
    x++;
}

출력
[직접 작성후 확인해보세요]

설명
x라는 변수는 while 반복문 내에서 상위의 x 변수 스코프에 접근이 가능하기 때문에 while 반복문 내에서 x 변수를 재정의할 수 없습니다.

case 4

코드 작성

// 1을 계속 출력하는 이유

int i = 0;
while (i < 20) {
    int number = 1;
    System.out.println(number);
    number++;
    i++;
}

출력
[직접 작성후 확인해보세요]

설명
반복문이 실행되면서 number 변수의 생성 및 소멸도 반복하기 때문에 항상 1을 출력합니다.

Comments