반응형
변수의 종류를 결정짓는 중요한 요소는 변수의 선언 위치
- 멤버변수를 제외한 나머지 변수들은 모두 지역 변수이며, 멤버변수 중 static이 붙은 것은 클래스 변수, 붙지 않은것은 인스턴스 변수
변수의 종류 | 선언위치 | 생성시기 |
클래스 변수 | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
인스턴스 변수 | 클래스 영역 | 인스턴스가 생성되었을 때 |
지역 변수 | 클래스 영역 이외의 영역(메스드,생성자,초기화 블럭 내부) | 변수 선언문이 수행되었을 때 |
클래스 변수와 인스턴스 변수
- 인스턴스 변수 → 인스턴스 마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스 변수로 선언
- 클래스 변수 → 인스턴스 변수 앞에 static 붙이기 인스턴스 변수와 다르게 모든 인스턴스가 공통적인 값을 유지해야하는 속성의 경우 사용
public class Card {
//인스턴스 변수(개별 속성)
String kind; //무늬
int number; //숫자
//클래스 변수(공통 속성)
static int width= 100;
static int height= 250;
}
클래스 변수는 객체 생성없이 ‘클래스이름.클래스 변수이름’로 직접 사용 가능하다.
Card c1 = new Card();
c1.width = 200; (x)
Card.width = 200; (O)
- 인스턴스 변수로 오해하지 않게 클래스 변수 사용시 ‘클래스이름.클래스 변수이름’으로 사용하기
인스턴스 변수는 인스턴스가 생성될 때마다 생성(각기 다른 값) 클래스 변수는 모든 인스턴스가 하나의 저장 공간을 공유(서로 같은 값)
반응형
'책 > Java의 정석' 카테고리의 다른 글
[java] 상속 (extends) (0) | 2023.02.04 |
---|---|
[java] 생성자(constructor)와 this, this() (2) | 2023.02.03 |
[java] static (0) | 2023.02.03 |
[java] 변수의 초기화 (0) | 2023.02.03 |
[java] Data type (0) | 2023.02.03 |