개발의 시작과 끝

2020.02.29 / Day - 16 전역변수, 지역변수 본문

생활코딩 자바

2020.02.29 / Day - 16 전역변수, 지역변수

개발지혜 2020. 2. 29. 16:21

생활코딩 19 - 유효범위

 

유효범위

 

전역변수(Global Variable)

함수 외부에서 선언된 변수로, 프로그램 전체에서 접근할 수 있는 변수.

전역변수는 프로그램의 시작과 동시에 메모리 공간에 할당되어서 프로그램이 종료될때까지 존재한다.

또한 지역변수와는 다르게 별도의 값으로 초기화하지 않으면 0으로 초기화된다.

 

지역변수(Local Variable)

함수 내부에서 선언된 변수로, 함수가 실행되면 만들어지고 함수가 종료되면 소멸하는 변수이다.

함수 외부에서는 접근할 수 없는 변수이다.

 

class Main {

  static int i = 5; // 전역 변수

  static void a() {
      int i = 10; // 지역 변수
      b();
  }

  static void b() {
      System.out.println(i);
  }

  public static void main(String[] args) {
    a();
  }
}

출력 : 5

 

this

class C3 {
    int v = 10; // 전역 변수

    void m() {
        int v = 20; // 지역 변수
        System.out.println(this.v);
    }
}

class Main {

    public static void main(String[] args) {
        C3 c1 = new C3(); // 인스턴스 변수
        c1.m();
    }
}

출력 : 10

전역변수보다 지역변수가 우선순위가 높기 때문에 m을 호출하면 지역변수인 20이 붙지만,

this를 붙이면 인스턴스 자신을 의미하는 키워드이기 때문에 전역변수인 10이 출력이된다.