1. Variable 종류?
- Class Variable[클래스 변수]
- Location[Class 영역]
- 생성시기[Class가 Memory에 올라갈 때]
- Memory[Method영역]
- Instance Variable[인스턴스 변수]
- Location[Class 영역]
- 생성시기[Instance가 생성되었을 때]
- Memory[Heap영역]
- Local Variable[지역 변수]
- Location[Class 영역 이외의 영역]
- Method(메소드)
- Constructor(생성자)
- Inside the initialization block(초기화 블록 내부)
- 생성시기[Variable 선언문이 수행되었을 때]
- Memory[Heap영역]
2. Class Variable?
- Static 지시자를 붙이며, Class가 Memory에 Loading될 때 생성됨
- JVM Memory 영역 중 Method영역에 Load됨
- 모든 Class의 Object가 공통된 Variable를 공유함
- Memory에 올라가 있기에 Class의 Object를 생성하지 않고도 사용 가능함
3. Instance Variable?
- Class의 Object를 생성할 때 만들어짐
- JVM Memory 영역중 heap영역에 Load됨
- Class의 Object마다 독립적인 값을 가질 수 있음
4. Local Variable?
- Block 내부에서 Variable 선언문이 실행되었을 때 생성됨
- Block이 종료되면 소멸됨
- JVM Memory 영역중 Heap영역에 Load됨