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

 
(다른 사용자 한 명의 중간 판 6개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
; 전역 변수보다 지역변수가 우선순위가 더 높다
; 전역 변수보다 지역변수가 우선순위가 더 높다
* 메소드 내에서의 i 는 외부에 영향을 주지 않는다
* 메소드(지역)내에서의 i 는 외부에 영향을 주지 않는다
<syntaxhighlight lang='java' run>
<syntaxhighlight lang='java' run>
public class ScopeDemo {
public class ScopeDemo {
     static void a() {
     static void a() {
         int i = 0;
         int i = 10;
     }
     }
     public static void main(String[] args) {
     public static void main(String[] args) {
15번째 줄: 15번째 줄:
  }
  }
</syntaxhighlight>
</syntaxhighlight>
*멤버변수 i를 선언하여 다시 수행하면 결과는 아래와 같다.
<syntaxhighlight lang='java' run>
<syntaxhighlight lang='java' run>
public class DemoScope {
public class DemoScope {
     static int i;
     static int i;
     static void a() {
     static void a() {
         i = 0;
         i = 10;
     }
     }
     public static void main(String[] args) {
     public static void main(String[] args) {
30번째 줄: 28번째 줄:
     }
     }
}
}
</syntaxhighlight>
* 아래와 같이 동일한 변수명으로 멤버변수, 메소드(지역) 내 변수를 할당했을떄 어떻게 될까?
<syntaxhighlight lang='java' multi file=Demo.java >
class Demo {
    int v = 10;


    void m() {
        int v = 20;
        System.out.println(v);
    }
}
</syntaxhighlight>
<syntaxhighlight lang='java'  multi file=DemoScope2.java  main run>
public class DemoScope2 {
    public static void main(String[] args) {
        Demo c1 = new Demo();
        c1.m(); // -> 메소드 내 지역변수가 출력이 된다.
    }
}
</syntaxhighlight>
</syntaxhighlight>

2021년 10월 6일 (수) 22:06 기준 최신판

개요[ | ]

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

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

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

}
Loading