Java의 정석
객체 지향 개념 - 4 선언 위치에 따른 변수의 종류
donghyeob.k
2022. 3. 3. 09:42
선언 위치에 따른 변수의 종류
변수의 선언위치가 변수의 종류와 범위를 결정한다.
class Variables
{
// 클래스 영역
int iv; // 인스턴스 변수
statc int cv; // 클래스 변수
// 메서드 영역
void method () {
int iv = 0; // 지역변수
}
}
- 클래스변수 - 클래스 영역에 선언하며 클래스가 메모리에 올라갈 때 생성됨, 같은 클래스의 모든 인스턴스들이 공유하는 변수로 인스턴스 생성없이 "클래스이름.클래스변수명"으로 접근
- 인스턴스변수 - 클래스 영역에 선언하며 인스턴스 생성 시 생성됨, 각 인스턴스의 개별적인 저장공간으로 인스턴스마다 다른 값 저장가능하며 생성 후, "참조변수.인스턴스변수명"으로 접근, 참조변수가 없을 때 가비지컬렉터에 의해 자동제거됨
- 지역변수 - 메서드 영역에 선언하며 변수 선언문 수행 시 생성됨, 조건문, 반복문의 블럭 내에 선언된 지역변수는 블럭을 벗어나면 소멸
클래스변수와 인스턴스변수
인스턴스변수는 인스턴스가 생성될 때마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스변수는 모든 인스턴스가 하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다.
class Card {
// 인스턴스변수
String kind; // 무늬
int number; // 숫자
// 클래스변수
static int width = 100; // 너비
static int height = 250; // 높이
}