[Java] 유효범위에 대하여 (1)

SeongEon Kim·2022년 4월 23일
0

JAVA

목록 보기
16/52

Java에서 유효범위란, 프로그램이 커질때 여러가지 이유로 변수 혹은 이름이 충돌할 수 있다. 이를 해결하기 위해 고안된 개념이다. 스코프(Scope)라고도 부른다.
JavaScript에서도 활용되는 개념이고, 해당 변수가 접근할 수 있는 변수, 객체 그리고 함수의 집합이라고 정리할 수도 있다.

아래 두 코드를 비교해보자.

public class ScopeDemo {
	static void a() {
   	int i = 0;
       //여기서 선언된 i를 지역변수라고 한다.
   }
   public static void main(String[] args) {
   	for (int i = 0; i<5; i++) {
       //for문 내에서 int를 통해 i를 선언
       	a();
           System.out.println(i);        }

}

위의 코드를 실행하면
0
1
2
3
4

가 나온다.

public class ScopeDemo2 {
	static int i;
    //여기서 i를 전역변수라고 한다.
    static void a() {
    	i = 0;
    }
    public static void main(String[] args ){
    	for (i=0;i<5;i++) {
        //i를 선언하지 않았음. 위 전역변수에서 선언한것으로 끝.
        a();
        System.out.println(i);
        }
	}
}

위의 코드를 실행하면,
0이 무제한으로 출력된다.

이 두 코드의 차이점은 무엇인가.
두번째 코드에서는 for문에서 i를 변수 선언하는 과정이 없으므로 위의 전역변수에서 선언한 i=0이 계속 출력되는 것이다.

Java에서 변수를 선언한다는 것은 변수의 값을 설정하는 것을 넘어 유효범위를 설정하는 것이다.
두번째 코드처럼 변수를 클래스 바로 밑에서 선언해버리면, 선언한 변수는 클래스 내 모든 메소드 및 for문에서 적용되버린다. (전역변수)
그러나, 중괄호 안에서 변수를 선언하면 그 중괄호 안에서만 유효한 변수가 된다.

profile
꿈을 이루는 사람

0개의 댓글