자바 스코프

장원재·2024년 11월 25일
0

java

목록 보기
10/19

자바에서는 스코프라는 개념이 있다. 직역하면 범위라는 뜻인데, 이것이 어떠한 의미를 내포하는지 생각해보자.

public class Scope3_1 {
    public static void main(String[] args) {
        int m = 10;
        int temp = 0;
        if (m > 0) {
            temp = m * 2;
            System.out.println("temp = " + temp);
        }
        System.out.println("m = " + m);
    }
}
  • 위의 코드는 m이 특정 조건을 만족하면 2배의 값을 일시적으로 출력하는 코드이다.
  • 여기서 스코프란 {} 코드 블럭 범주안에서만 정의된 변수에 접근할 수 있음을 의미한다. ex) main{} 안에서 m, temp의 변수에 접근할 수 있다.
  • 위의 코드에서는 temp 를 if{} 코드 블럭 내부가 아닌 main{} 코드 블럭 내부에 선언함으로써 아래와 같은 문제가 발생한다.
  1. 불필요한 메모리 사용: 사실 temp 라는 변수는 if{} 코드 블럭 내부에서만 사용되는 변수이다. 따라서 if{} 코드 블럭 내부에 선언 했다면 if{} 가 완료되는 시점에서 temp 변수를 제거하여 효율적인 메모리 사용을 할 수 있다.
  2. 코드의 복잡성 증가: if 안에 temp 를 선언했다면, if{}가 끝나고 temp의 사용은 없기에 머릿속에서 변수 하나를 지워도 된다.

따라서 아래와 같이 temp 변수의 스코프를 if{} 코드블럭 내부로 지정하는게 좋다.

public class Scope3_2 {
    public static void main(String[] args) {
        int m = 10;
        if (m > 0) {
            int temp = m * 2; //변경
            System.out.println("temp = " + temp);
        }
        System.out.println("m = " + m);
    }
}
profile
데이터 분석에 관심있는 백앤드 개발자 지망생입니다

0개의 댓글

관련 채용 정보