목차
접기
728x90
반응형
변수 유효 범위란?
- 지금까지 세 가지 종류의 변수를 알아보았다.
- 함수나 메서드 안에서만 사용할 수 있는 지역 변수(로컬 변수, local variable)
- 클래스 안에서 사용하는 멤버 변수(인스턴스 변수, instance variable)
- 여러 인스턴스에서 공통으로 사용할 수 있는 static 변수(클래스 변수, class variable)
- 변수는 어디에 어떻게 선언되느냐에 따라 유효 범위(scope)가 달라진다.
지역 변수의 유효 범위
- 지역 변수는 함수나 메서드 내부에 선언하기 때문에 함수 밖에서는 사용할 수 없다.
- 즉 하나의 함수에 선언한 지역 변수는
다른 함수에서 사용할 수 없다.
- 지역 변수가 생성되는 메모리를 스택(stack)이라고 한다.
- 스택에 생성되는 지역 변수는 함수가 호출될 때 생성되었다가 함수가 반환되면 할당되었던 메모리 공간이 해제되면서 함께 없어진다.
멤버 변수의 유효 범위
- 멤버 변수는 인스턴스 변수라고도 한다.
- 클래스가 생성될 때 힙(heap) 메모리에 생성되는 변수이다.
- 멤버 변수는 클래스의 어느 메서드에서나 사용할 수 있다.
- 힙에 생성된 인스턴스가 가비지 컬렉터(garbage collector)에 의해 수거되면 메모리에서 사라진다.
- 따라서 클래스 내부의 여러 메서드에서 사용할 변수는 멤버 변수로 선언하는 것이 좋다.
static 변수의 유효 범위
- 사용자가 프로그램을 실행하면 메모리에 프로그램이 상주한다.
- 이때 프로그램 영역 중에 데이터 영역이 있다.
- 이 영역에는 상수나 문자열, static 변수가 생성된다.
- 인스턴스 변수는 객체가 생성되는 문장 즉 new(예약어)가 되어야 생성되지만, static 변수는 클래스 생성과는 상관없이
처음부터데이터 영역 메모리
에 생성된다. - 따라서 인스턴스 변수와 static 변수는
사용하는 메모리가 다르다.
- 이렇게 생성된 static 변수는 private이 아니라면 클래스 외부에서도 객체 생성과 무관하게 사용할 수 있다.
- 프로그램 실행이 끝난 뒤 메모리에서 내려가면(예를 들어 워드 프로그램이라면 [닫기]를 한 경우) static 변수도 소멸된다.
- static 변수는 프로그램이 시작할 때부터 끝날 때까지 메모리에 상주하므로 크기가 너무 큰 변수를 static으로 선언하는 것은 좋지 않다.
728x90
반응형
LIST
'Java' 카테고리의 다른 글
[ java ] 이클립스 단축키 (0) | 2020.12.19 |
---|---|
[ java ] 배열 응용 프로그램(ArrayList 배열 객체) 만들기 (0) | 2020.12.18 |
[ java ] static 변수와 static 메서드 연습하기/클래스 메서드/클래스 변수 (0) | 2020.12.17 |
[ java ] static 변수 (0) | 2020.12.17 |
[ java ] 객체. this (0) | 2020.12.17 |