자바의 변수는 선언위치에 따라 크게 전역변수와 지역변수로 나뉜다

  • 어느 위치에서든 호출이 가능하면 전역변수
  • 특정 구역 내에서만 사용 가능하면 지역변수

전역변수의 경우는 그 내에서도 클래스 변수와 인스턴스 변수로 나뉜다

public class Test {
    int var1; // 인스턴스 변수 (전역변수)
 	static int var2; // 클래스 변수 (전역변수)
  
    public void fun() {
        int var3; // 지역 변수 (지역변수)
    }
}
변수종류 선언위치 생성시기(메모리 할당 시기)
클래스 변수 클래스 영역 클래스가 메모리에 올라갔을 때
인스턴스 변수 클래스 영역 인스턴스가 생성될 때
지역 변수 클래스 이외의 영역 변수 선언문이 수행되었을 때

인스턴스 변수

클래스 영역에 선언되고, 인스턴스(객체)를 생성할 때 만들어짐

  • 인스턴스의 변수 값을 가져오기 위해선 일단 인스턴스를 생성해줘야 함
  • 인스턴스는 독립적인 저장공간을 가지기 때문에 서로 다른 값을 가질 수 있음

클래스 변수

인스턴스에 static 만 붙이면 되고, 클래스가 로딩 될 때 만들어짐

  • 인스턴스 변수와 달리 클래스 변수는 공통된 저장공간을 사용
  • 클래스가 로딩 시 (메모리에 올라갔을 때) 생성되어 프로그램이 종료 될 때까지 유지되됨

지역 변수

메소드 내에서만 사용 가능

  • 메소드가 실행될 때 메모리를 할당 받으며 메소드가 끝나면 소멸 되어 사용할 수 없음

레퍼런스

[JAVA] 자바의 변수 (클래스 변수, 인스턴스 변수, 지역 변수)
[Java] 클래스 / 인스턴스 / 지역변수 쉽게 이해하기