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

(새 문서: ==개요== ; 전역 변수보다 지역변수가 우선순위가 더 높다 * <syntaxhighlight lang='java' run> public class ScopeDemo { static void a() { int i = 0;...)
 
 
(다른 사용자 한 명의 중간 판 8개는 보이지 않습니다)
1번째 줄: 1번째 줄:
==개요==
==개요==
; 전역 변수보다 지역변수가 우선순위가 더 높다
; 전역 변수보다 지역변수가 우선순위가 더 높다
*
* 메소드(지역)내에서의 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) {
         for (int i = 0; i < 5; i++) {
         for (int i = 0; i < 5; i++) {
            a(); // 문맥상 i 를 0으로 초기화 시키는 것처럼 보이지만 클래스 멤버 메소드 내에서만 사용되고 폐기된다.
            System.out.println(i);
        }
    }
}
</syntaxhighlight>
<syntaxhighlight lang='java' run>
public class DemoScope {
    static int i;
    static void a() {
        i = 10;
    }
    public static void main(String[] args) {
        for(i = 0; i < 5; i++) {
             a();
             a();
             System.out.println(i);
             System.out.println(i);
         }
         }
     }
     }
}
}
</syntaxhighlight>
 
* 아래와 같이 동일한 변수명으로 멤버변수, 메소드(지역) 내 변수를 할당했을떄 어떻게 될까?
<syntaxhighlight lang='java' multi file=Demo.java >
class Demo {
    int v = 10;
 
    void m() {
        int v = 20;
        System.out.println(v);
    }
}
</syntaxhighlight>
</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>

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