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

정리


선언 위치에 따른 변수 종류

public class test {
    int iv; // 인스턴스 변수
    static int cv; // 클래스 변수
    void method() {
        int lv; // 지역 변수
    }
}
  • 클래스 변수와 인스턴스 변수를 합쳐서 멤버변수라고 부름
변수의 종류 선언위치 생성시기(메모리 할당 시기)
클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때
인스턴스 변수 클래스 영역 인스턴스가 생성될 때
지역 변수 클래스 이외의 영역(메서드, 생성자, 초기화블럭) 변수 선언문이 수행 되었을 때
  • 인스턴스 변수
    • 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야 함.
    • 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야할 때는 인스턴스 변수로 선언
  • 클래스 변수
    • 클래스 변수는 인스턴스 변수에 static만 붙여주면 됨
    • 클래스 변수는 모든 인스턴스가 공통된 값을 공유
    • 한 클래스의 모든 인스턴스들이 공통적인 값을 가져야할 때 클래스 변수로 선언
    • 클래스가 로딩될 때 생성되어(메모리에 딱 한번만 올라감) 종료 될 때 까지 유지되는 클래스 변수는 public 을 붙이면 같은 프로그램 내에서 어디서든 접근할 수 있는 전역 변수가 됨
    • 인스턴스를 생성하지 않고 클래스이름.클래스변수명 을 통해서 접근 가능
  • 지역 변수
    • 메서드 내에서 선언되며 메서드 내에서만 사용할 수 있는 변수
    • 메서드가 실행될 때 메모리를 할당 받으며 메서드가 끝나면 소멸

참고