📚 참고
자바의 정석 기초편 (객체지향개념만)
변수의 선언위치
1. 클래스 영역
- iv, cv가 위치해있다.
- 변수 선언문만 가능 (대입문 X)
2. 메서드 영역
class Variables {
// 클래스 영역
int iv; // 인스턴스 변수
static int cv; // 클래스 변수(static 변수)
void method() {
// 메서드 영역
int iv = 0; // 지역변수
}
}
변수 종류
1. 클래스 변수 (cv)
- 클래스 영역에 위치
- 클래스가 메모리에 올라갈 때 생성 (자동으로 생성됨)
CPU는 RAM하고만 작업
클래스 변수의 사용
- 참조변수를 사용하여 cv를 사용하는건 가능하지만 권장하지 않는다. 참조변수를 사용함으로써 cv를 인스턴스 변수라고 착각할 가능성이 있기 때문이다.
Card c = new Card();
c.kind = "HEART";
c.number = 5;
// 참조변수 사용하는건 가능하지만 권장X
c.width = 200;
c.height = 300;
// 권장
Card.width = 200;
Card.height = 300;
2. 인스턴스 변수 (iv)
- 클래스 영역에 위치
- 인스턴스가 생성 되었을 때 생성
3. 지역변수 (lv)
- 클래스 영역 이외에 위치 (메서드, 생성자, 초기화 블럭 내부)
- 변수 선언문이 수행되었을 때 생성
- 메서드 유효범위 내에서만 존재
클래스 변수와 인스턴스 변수의 차이
- 개별 속성 (객체마다 다르게 유지) ➡ 인스턴스 변수
- 공통 속성 (객체마다 공통되게 유지) ➡ 클래스 변수
class Card {
// 개별속성
String kind; // 무늬
int number; // 숫자
// 공통속성
static int width = 100; // 폭
static int height = 250; // 높이
}