- 변수 : 하나의 데이터를 저장할 수 있는 공간
- 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간
- 구조체 : 서로 관련되 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간
- 클래스 : 데이터와 함수의 결합(구조체 + 함수)
1. 변수
- 변수는 클래스 변수, 인스턴스 변수, 지역 변수 모두 세 종류.
- 변수의 종류를 결정짓는 요소는 '변수의 선언된 위치' 이므로 변수의 종류 파악하기 위해서는 변수가 어느 영역에 선언되었는지 확인하는 것이 중요
1) 인스턴스 변수
- 멤버 변수 중에 static
이 붙지 않은 것
- 생성시기는 인스턴스가 생성되었을 때
- 독립적인 저장공간을 가짐으로 서로 다른 값을 가질 수 있음.
- 인스턴스마다 고유한 상태를 유지해하는 속성의 경우 사용
2) 클래스 변수
- 멤버 변수 중에 static
이 붙은 것
- 생성시기는 클래스가 메모리에 올라갈때 생성됨
따라서, 한 클래스의 모든 인스턴스들이 공통적인 값을 유지하는 속성의 경우 사용
- 클래스 변수는 인스턴스와 달리 모든 인스턴스가 공통된 저장공간을 공유하게 된다. (그래서 공유변수라고도 함)
- 클래스가 로딩될 때 생성되서 프로그램이 종료 될 때 까지 유지되며, public
을 앞에 붙이면 같은 프로그램 내에서 어디서나 접근할 수 있는 전역변수(global variable)의 성격을 갖고 있다.
3) 지역변수
- 멤버 변수를 제외한 나머지 변수
- 생성시기는 변수 선언문이 수행되었을 때이다.
- 매서드 내에 선언되어서 메서드 내에서만 사용 가능. 메서드가 종료되면 소멸되어 사용할 수 없다.
- 또는 for
이나 while
같은 블럭 내에 선언된 지역변수는 블럭{}
내에서만 사용가능하다.
class Variables {
int iv; //인스턴스 변수
static int cv; //클래스 변수(static 변수, 공유변수)
voide method() {
int lv = 0; //지역변수
}
}
Variables 안에 있는 iv, cv는 클래스 영역에 있으므로 멤버변수 lv는 메서드 영역에 있으므로 멤버변수가 아니므로 지역변수 이다.