Language/JAVA

[JAVA] 선언 위치에 따른 변수의 종류

gangintheremark 2023. 7. 24. 10:39
728x90

클래스 내의 멤버 변수를 제외한 나머지 변수들은 모두 로컬변수이고, 멤버변수 중 static 키워드를 사용한 것은 클래스변수 그렇지 않은 것은 인스턴스 변수이다.

/* 클래스 영역 */
class  Variables {
    int a;            // 인스턴스 변수
    static int b;    // 클래스 변수 

    /* 메서드 영역 */
    void method() {
        int c = 0;     // 로컬 변수 
    }
}

 

로컬 변수

  • 메서드 안에서 선언된 변수
  • 메서드가 호출될 때 생성되고 메서드가 종료될 때 제거
  • 스택 stack 메모리에 저장
  • 기본적으로 메서드 블록 scope를 따른다
  • 반드시 사용 전에 초기화 필수

 

인스턴스 변수

  • 메서드 밖에서 선언된 변수
  • 객체 생성할 때 생성되고 객체가 제거될 때 삭제
  • 힙 heap 메모리에 저장
  • 기본적으로 클래스 블록 scope를 따른다
  • 자동으로 초기화
💡 생성자는 인스턴스 변수에 데이터를 초기화하는 역할

 

클래스 변수

  • 메서드 밖에서 선언된 변수로 static 키워드를 사용
  • 프로그램이 실행될 때 자동으로 생성되고, 프로그램이 종료될 때 삭제
  • 인스턴스와 무관하게 객체 생성 전에 생성
  • 자동으로 초기화
728x90