[Java] 멤버 변수, 인스턴스 변수, 클래스 변수
Intro
이 글에서는 자바의 멤버 변수, 인스턴스 변수, 클래스 변수에 대해 다룹니다.
멤버 변수
- 멤버 변수는 클래스에 선언된 변수를 의미하며, 객체의 속성을 나타내는 역할을 한다.
- 클래스의 영역에 선언되고 메서드 밖에서 정의되는 변수이다.
- 멤버 변수는 크게 인스턴스 변수와 클래스 변수로 나뉜다.
인스턴스 변수
- 인스턴스 변수는 클래스의 객체(인스턴스)가 생성될 때마다 각각의 객체에 독립적으로 생성되는 변수이다.
static
키워드 없이 선언된 멤버 변수이다.- 각 객체마다 별도의 값을 가지며, 객체가 소멸되면 메모리에서 해제된다.
- 인스턴스 변수는 주로 객체의 고유한 속성을 저장하는 데 사용된다.
클래스 변수
- 클래스 변수는 클래스에 속하며, 모든 객체가 공유하는 변수이다.
static
키워드를 사용하여 선언된 변수이다.- 클래스가 메모리에 로드될 때 한 번만 메모리에 할당되며, 프로그램 종료 시까지 유지된다.
- 클래스 변수는 모든 객체가 동일한 값을 가져야 하는 속성을 정의할 때 사용된다.
클래스 변수에 static
이 필요한 이유
-
클래스 차원에서 관리:
static
키워드가 없는 변수는 인스턴스 변수로 취급되어 객체마다 독립적으로 존재하게 된다.- 클래스 차원에서 공유되는 변수로 설정하려면 반드시
static
이 필요하다.
-
메모리 관리:
- 클래스 변수는 클래스 로드 시점에 메모리에 한 번만 생성되어 모든 객체가 공유한다.
static
이 없는 변수는 객체가 생성될 때마다 새로운 메모리를 할당받으므로 인스턴스 변수로 동작한다.
따라서 클래스 변수를 정의하려면 반드시 static
키워드를 사용해야 한다.
댓글남기기