변수
- 변수( variable )란 값( vlaue )을 저장할 수 있는 메모리의 공간을 의미.
- 값을 담을 수 있는 상자와 같다.
- 변수는 말 그대로 '변하는 수'이기도 한다.
- 변수를 사용하기 위해선 어떤 형태의 자료값을 담을 것인지 먼저 정해야 한다.
변수의 구성

변수의 범위(Scope)
변수는 선언된 영역의 바깥쪽 영역에서는 사용 할 수 없다.
변수는 '선언위치' 에따라 전역변수와 지역변수로 나뉜다.
- 전역변수(Global variable)
: 어느 위치에서든 호출하면 사용가능 함수 밖에서 선언하며 클래스 전체에서 사용이 가능하다.
- 클래스 변수(static variable)
- static으로 선언된 변수로 JVM에 의해 클래스가 메모리에 올라갈때 부터 프로그램 종료시 까지 유지한다.
- 클래스가 여러번 생성되어도 static 변수는 처음 딱 한번만 생성
- 객체를 따로 생성하지 않아도 사용이 가능하다
- 한 클래스의 모든 인스턴스들이 공통적인 값을 가져야할때 사용
- 인스턴스 변수(Instance variable)
- 클래스 영역에 위치한 변수 중에서 static키워드를 가지지 않는 변수.
- 클래스 영역에서 선언되어 객체가 생성 될 때마다 초기화 된다.
- 그러므로 객체를 생성 후에 사용 가능하다.
- 인스턴스 별로 다른 값을 가질 수 있으므로 각각의 인스턴스마다 고유의 값을 가져야할때 사용
- 지역변수(Local variable)
: 블럭 ( {...} )내에서 생성되어 그 블럭 내에서만 사용가능
함수 안에 선언되어 해당 함수 안에서만 사용이 가능하다.
public class varScope{
int instanceVar = 0;
static int staticVar = 0;
void method(){
int localVar = 0;
}
}
변수의 생성주기 & 메모리 저장 영역
변수 | 생성시기 | 소멸시기 | 저장 메모리 |
---|
클래스 변수 | 클래스가 메모리에 올라갈 때 | 프로그램이 종료될 때 | Static 영역 |
인스턴스 변수 | 인스턴스가 생성될 때 | 인스턴스가 소멸할 때 | Heap 영역 |
지역 변수 | 블록 내에서 변수의 선언문이 실행될때 | 블록을 벗어날 때 | Stack 영역 |
*static영역은 method영역, class영역, code영역이라고도 불린다.
정리를 하면서 인스턴스의 개념을 다시 한번 생각해보게 되었다. 추후에 객체와 인스턴스의 차이점에 대해 정리를 해봐야겠다.
it국비지원 / 구디아카데미 / 김지훈 강사님