최대 1 분 소요

클래스 변수, 인스턴스 변수

클래스 변수(Static 멤버)
  • 클래스 내에 Static 키워드로 선언된 변수
  • 처음 JVM이 실행되어 클래스가 메모리에 올라갈 때 ~ 프로그램이 종료될 때까지 유지
  • 클래스가 여러 번 생성되어도 Static 변수는 처음 딱 한 번만 생성됨
  • 동일한 클래스의 모든 객체들에 의해서 공유됨
인스턴스 변수(Non-static 멤버)
  • 클래스 내에 선언된 변수
  • 객체 생성 시마다 매번 새로운 변수가 생성됨
  • 클래스 변수와 달리 공유되지 않음
메모리에 적재되는 위치
public static class StaticTest {
	static int classVar = 10;
    int instanceVar = 28;
    
    public void method() {
        int localvar = -100;
        System.out.println(localvar);
    }
}
  • staticTest1, staticTest2 두 객체를 생성했을 때 new()로 생성된 두 객체가 각각 Heap에 할당되고 각 객체를 가리키는 staticTest1변수와 staticTest2변수가 stack에 생성된다.
  • 인스턴스 변수지역변수는 객체가 생성될 때마다 Stack영역에 매번 새로 생성되지만 클래스 변수Static Area에 한 개만 생성되고 하나의 영역을 공유한다.

image

참고

https://sujinhope.github.io/2021/03/03/Java-%ED%81%B4%EB%9E%98%EC%8A%A4%EB%B3%80%EC%88%98,-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EB%B3%80%EC%88%98-%EC%B0%A8%EC%9D%B4(Static%EB%B3%80%EC%88%98%EC%99%80-Non-Static%EB%B3%80%EC%88%98).html

태그:

카테고리:

업데이트: