Java

Java - scope

권현재 2023. 5. 4. 23:44

java에도 scope 개념이 있다.

 

scope( 유효 범위 ) 는 사실 지금까지 코드를 작성하면서 당연시하게 생각했던 것들 중 몇가지가 있다.

 

한마디로 정리하면 변수가 접근할 수 있는 범위 라고 생각하면 좋을 것 같다.

let i = 0;

for (let i = 0; i < 5; i++) {
	System.out.println(i); // 0, 1, 2, 3, 4 
}

System.out.println(i); // 0

이렇게 for문 안에 있는 i는 밖에서 사용할 수 없다.

 

그럼 아래 코드처럼 변경하면 어떻게 될까 ?

package lifeCoding_03_scope;

// 무한 루프
public class _02_ {
    static int i; 
    
    static void a() {
        i = 0; 
    }
    
    public static void main(String[] args) {
        for (i = 0; i < 5; i++) {
            a();
            System.out.println(i); // 무한 반복
        }
    }
}

 

아래 코드를 보면 scope의 개념을 명확하게 잡을 수 있다.

 

즉 메소드에 변수가 선언되지 않았을 경우 클래스에서 같은 이름의 변수를 찾아올 수 있지만, 그 반대는 적용 될 수 없다.

package lifeCoding_03_scope;

class C {
    int v = 10;
    void m() {
        int v =  20;
        System.out.println("v : " + v);           // 지역변수
        System.out.println("this.v : " + this.v); // 전역변수
    }
}
public class _06_ {
    public static void main(String[] args) {
        C c1 = new C();
        c1.m();
    }
}

 

참고 영상 : https://www.youtube.com/playlist?list=PLuHgQVnccGMCeAy-2-llhw3nWoQKUvQck