변수는 클래스 변수, 인스턴스 변수, 지역변수 모두 세 종류가 있다. 변수의 선언 위치에 따라 변수의 종류가 결정된다.
멤버변수를 제외한 나머지 변수들은 모두 지역변수
이며, 멤버변수 중 static이 붙은 것은 클래스 변수
, 붙지 않은 것은 인스턴스 변수
이다.
class Variables {
int iv; // 인스턴스 변수
static int cv; // 클래스 변수(static 변수, 공유변수)
void method()
{
int lv = 0; // 지역변수
}
}
변수의 종류 | 선언위치 | 생성시기 |
---|---|---|
클래스 변수 | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
인스턴스 변수 | 클래스 영역 | 인스턴스가 생성되었을 때 |
지역변수 | 클래스 영역 이외의 영역 | 변수 선언문이 수행되었을 때 |
클래스 영역에 생성된 변수를 멤버변수
라고 합니다. 멤버 변수 중 static이 붙은 것은 클래스변수, static이 붙지 않은 것은 인스턴스 변수입니다. 멤버변수
는 인스턴스 변수와 클래스 변수를 모두 통칭하는 말입니다.
멤버 변수 중 static
키워드를 가지고 필드에 선언하는 변수입니다. 모든 인스턴스가 공통된 저장공간(변수)을 공유하므로, 항상 공통된 값을 갖습니다.
인스턴스 변수와 달리 인스턴스를 생성하지 않고 언제라도 바로 사용할 수 있습니다.
멤버 변수 중 static 키워드 없이 클래스 영역에 선언된 변수입니다. 인스턴스를 생성할 때 만들어지며, 인스턴스마다 별도의 저장공간을 가지므로 서로 다른 값을 가질 수 있습니다.
클래스 변수 | 인스턴스 변수 |
---|---|
공통 속성 | 개별 속성 |
메서드 내에 선언되며 메서드 내에서만 사용 가능합니다. 메서드가 종료되면 사용할 수 없습니다.
생성자 또는 메서드가 작업을 수행하는데 필요한 값들(입력)을 제공받기 위한 변수입니다.
클래스의 객체를 참조하기 위한 변수입니다. 정확히는 객체의 멤버변수 또는 멤버 메서드를 사용하기 위해 사용하는 변수입니다.
속성(property) | 기능(function) |
---|---|
멤버변수(variable) | 메서드(method) |