🌱 오늘의 주제 : 클래스 변수와 인스턴스 변수
🌱 선언위치에 따른 변수의 종류
class Variables
{ // 클래스 영역 시작
int iv; // 인스턴스 변수
static int cv; // 클래스 변수(static변수, 공유변수_
void methid()
{ // 메서드 영역 시작
int lv = 0; // 지역변수
} // 메서드 영역 끝
} // 클래스 영역 끝
| 변수의 종류 |
선언위치 |
생성시기 |
| 클래스 변수 (class variable) |
클래스 영역 |
클래스가 메모리에 올라갈 때 |
| 인스턴스 변수 (instance variable) |
인스턴스가 생성되었을 때 |
| 지역변수 (local variable) |
클래스 영역 이외의 영역 (메서드, 생성자, 초기화 블럭 내부) |
변수 선언문이 수행되었을 때 |
- 인스턴스 변수 : 클래스 영역에서 선언, 인스턴스를 생성할 때만 만들어진다.
- 클래스 변수 : 인스턴스 변수 앞에 static 붙인다. 모든 인스턴스가 공통된 저장공간(변수)을 공유 한다. 인스턴스 생성안하고 사용 가능.
- 지역 변수: 메서드 내에서만 사용 가능. 메서드가 종료되면 소멸.
🌱 클래스 변수와 인스턴스 변수
class Card{
String kind; // 인스턴스 변수 (개별 속성)
int number; // 인스턴스 변수 (개별 속성)
static int width = 100; // 클래스 변수 (공통 속성)
static int height = 250; // 클래스 변수 (공통 속성)
}
- 인스턴스 변수는 인스턴스가 생성될 때 마다 생성되므로 각기 다른 값을 유지 가능.
- 클래스 변수는 모든 인스턴스가 하나의 저장공간을 공유하므로, 항상 공통된 값을 갖는다.