선언 위치에 따른 변수의 종류
| 변수의 종류 | 선언위치 | 생성시기(메모리 할당 시기) |
|---|
| 클래스 변수 | 클래스 영역 | 클래스가 메모리에 올라갈 때 |
| 인스턴스 변수 | 클래스 영역 | 인스턴스가 생성될 때 |
| 지역 변수 | 클래스 이외의 영역 (메서드, 생성자, 초기화 블럭) | 변수 선언문이 수행되었을 때 |
변수의 종류를 결정짓는 것은 '변수가 선언된 위치'이다.
인스턴스 변수
- 인스턴스가 생성될 때 생성됨
- 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야 함
- 각각의 인스턴스마다 고유의 값을 가져야할 때는 인스턴스 변수로 선언
클래스 변수
static + 인스턴스 변수
- 모든 인스턴스가 공통된 값을 공유
- 클래스가 로딩될 때 생성되어 (메모리에 딱 한번 올라감) 종료될 때까지 유지되는 클래스 변수는 public을 붙여 전역 변수로 생성 가능
- 인스턴스를 생성하지 않고,
클래스이름.클래스변수명을 통해 접근 가능
지역 변수
- 메소드 내에서 선언되며 메소드 내에서만 사용 가능
- 메소드가 실행될 때, 메모리를 할당받으며 메소드가 끝나면 소멸되어 사용 불가
출처: 에반황 - [JAVA] 자바의 변수