Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]

지역 변수 와 멤버 변수

2010. 3. 25. 16:13programming/terms

728x90

1. 자바 변수

자바에서의 변수 선언은 { } 블록으로 묶여 있는 곳이라면 어디에서나 가능하며
C언어나 C++언어의 경우 변수 선언 외의 실행문이 나오기 전에
모든 변수가 선언되어야 하는 차이가 있습니다.
자바에서의 변수 선언은 프로그램 클래스 내부의 어디에서나 가능합니다.
변수를 선언하는 위치에 따라서 지역변수와 멤버변수로 구분합니다.

2. 지역변수(local variable)

 { } 블록 내에서 선언된 지역 변수는 { } 지역을 벗어나면 자동으로 삭제됨
따라서 해당 { } 블록의 실행이 끝나면 더 이상 프로그램 내의 다른 블록에서는
사용 불가능해집니다.

 

 while(true) {
        int var1 = 200;
        while (true) {
                int var2 = 300;
                System.out.println(var1);         // ok
                System.out.println(var2);         // ok
                break;
     }
    System.out.println(var1);                     // ok
    System.out.println(var2);                     // 오류발생
 }

while 블록에서 선언된 var2가 내부 while 블록을 종료하면 더 이상 사용할 수 없는 변수이므로 오류가 발생

3. 멤버변수(member variable)

class LocalTest{
    String s = "member 변수";                           // member variable
    public void m1(){
        System.out.println(s);                           // 멤버변수 사용
    }


    public static void main(String args[]){
        String s = "main 메소드의 local 변수";       // local variable
        System.out.println(s); // 라인 4
        System.out.println(new LocalTest().s);    // 지역변수 사용
    }
}

멤버변수로 선언된 변수와 같은 이름의 지역변수를 선언할 수 있습니다.
이 지역변수는 선언된 { } 블록 내에서만 사용합니다.

class LocalTest{
    String s ;                                                        // 묵시적으로 null로 초기화
    public void m1(){
        System.out.println(s);                                   // null   

    }
    public static void main(String args[]){
        String s ;                                                    // 지역변수는 묵시적으로 초기화 되지 않음
        System.out.println(s);                                   // 오류발생

        System.out.println(new LocalTest().s);          // null

    }
}

 

지역 변수는 묵시적으로 자동 초기화되지 않으므로 오류가 발생합니다.

728x90

'programming > terms' 카테고리의 다른 글

객체지향 _ 객체, 클래스, 인스턴스  (0) 2010.05.19
자바 charAt(0)  (0) 2010.03.30
서블릿(Servlet)  (0) 2010.03.26
오버플로우(Overflow)  (0) 2010.03.25
리터럴(literal) 이란?  (0) 2010.03.24