"Java 스코프"의 두 판 사이의 차이

43번째 줄: 43번째 줄:
}
}
</syntaxhighlight>
</syntaxhighlight>
<syntaxhighlight lang='java'  miltifile=DemoScope2.java  main>
<syntaxhighlight lang='java'  miltifile=DemoScope2.java  main run>
public class DemoScope2 {
public class DemoScope2 {



2021년 10월 5일 (화) 22:06 판

개요

전역 변수보다 지역변수가 우선순위가 더 높다
  • 메소드(지역)내에서의 i 는 외부에 영향을 주지 않는다
Java
Copy
public class ScopeDemo {
     static void a() {
        int i = 0;
    }
     public static void main(String[] args) {
        for (int i = 0; i < 5; i++) {
            a(); // 문맥상 i 를 0으로 초기화 시키는 것처럼 보이지만 클래스 멤버 메소드 내에서만 사용되고 폐기된다.
            System.out.println(i);
        }
    }
 }
Loading
  • 멤버변수 i를 선언하여 다시 수행하면 결과는 0이 무한으로 찍히게 될것이다.
Java
Copy
public class DemoScope {
    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);
        }
    }
}
Loading
  • 아래와 같이 동일한 변수명으로 멤버변수, 메소드(지역) 내 변수를 할당했을떄 어떻게 될까?
Java
Copy
class Demo {
    int v = 10;

    void m() {
        int v = 20;
        System.out.println(v);
    }
}
Java
Copy
public class DemoScope2 {

    public static void main(String[] args) {
        Demo c1 = new Demo();
        c1.m(); // -> 메소드 내 지역변수가 출력이 된다.
    }

}
Loading