Java에서 쓰이는 변수는 크게 세가지로 나뉜다.
조금 헷갈리는 부분이 있으니 여기 정리해둔다.
![](https://velog.velcdn.com/images/sangzoon0102/post/fd066e38-2584-4413-b977-35c94505918b/image.png)
1. 지역 변수(local variable)
- 선언 위치: 함수 내부에 선언
- 사용 범위: 함수 내부에서만 사용
- 메모리: Stack
- 생성: 함수가 호출될 때 생성
- 소멸: 함수가 끝나면 소멸
2. 멤버 변수(instance variable)
- 선언 위치: 클래스 멤버 변수로 선언
- 사용 범위: 클래스 내부(private가 아니면 참조 변수로 다른 클래스에서 사용 가능)
- 메모리: Heap
- 생성: 인스턴스가 생성될 때 힙에 생성
- 소멸: 가비지 컬렉터가 메모리를 수거할 때 소멸
3. 클래스 변수(static variable)
- 선언 위치: static 예약어를 사용하여 클래스 내부에 선언
- 사용 범위: 클래스 내부(private가 아니면 참조 변수로 다른 클래스에서 사용 가능)
- 메모리: Static
- 생성: 프로그램이 시작될 때 상수와 함께 데이터 영역에 생성
- 소멸: 프로그램이 끝나고 메모리가 헤제할 때 소멸