Language/JAVA
[JAVA] 선언 위치에 따른 변수의 종류
gangintheremark
2023. 7. 24. 10:39
728x90
클래스 내의 멤버 변수를 제외한 나머지 변수들은 모두 로컬변수
이고, 멤버변수 중 static 키워드를 사용한 것은 클래스변수
그렇지 않은 것은 인스턴스 변수
이다.
/* 클래스 영역 */
class Variables {
int a; // 인스턴스 변수
static int b; // 클래스 변수
/* 메서드 영역 */
void method() {
int c = 0; // 로컬 변수
}
}
로컬 변수
- 메서드 안에서 선언된 변수
- 메서드가 호출될 때 생성되고 메서드가 종료될 때 제거
- 스택 stack 메모리에 저장
- 기본적으로 메서드 블록 scope를 따른다
- 반드시 사용 전에 초기화 필수
인스턴스 변수
- 메서드 밖에서 선언된 변수
- 객체 생성할 때 생성되고 객체가 제거될 때 삭제
- 힙 heap 메모리에 저장
- 기본적으로 클래스 블록 scope를 따른다
- 자동으로 초기화
💡 생성자는 인스턴스 변수에 데이터를 초기화하는 역할
클래스 변수
- 메서드 밖에서 선언된 변수로
static
키워드를 사용 - 프로그램이 실행될 때 자동으로 생성되고, 프로그램이 종료될 때 삭제
- 인스턴스와 무관하게 객체 생성 전에 생성
- 자동으로 초기화
728x90