자바에서는 스코프라는 개념이 있다. 직역하면 범위라는 뜻인데, 이것이 어떠한 의미를 내포하는지 생각해보자.
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);
}
}
- 불필요한 메모리 사용: 사실 temp 라는 변수는 if{} 코드 블럭 내부에서만 사용되는 변수이다. 따라서 if{} 코드 블럭 내부에 선언 했다면 if{} 가 완료되는 시점에서 temp 변수를 제거하여 효율적인 메모리 사용을 할 수 있다.
- 코드의 복잡성 증가: 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);
}
}