각진 세상에 둥근 춤을 추자
[Java] 변수 유효 범위 본문
변수는 크게 3가지로 나눌 수 있다.
1. 지역 변수 (로컬 변수, local variable): 함수나 메서드 안에서만 사용할 수 있다.
2. 멤버 변수 (인스턴스 변수, instance variable): 클래스 안에서 사용한다.
3. static 변수 (클래스 변수, class variable): 여러 인스턴스에서 공통으로 사용할 수 있다.
이러한 변수는 어디에, 어떻게 선언되느냐에 따라 유효 범위 (scope)가 달라진다.
1. 지역 변수의 유효 범위
지역 변수는 함수나 메서드 내부에 선언하기 때문에 함수 밖에서는 사용할 수 없다.
즉, 하나의 함수에 선언한 지역 변수는 다른 함수에서 사용할 수 없다.
지역 변수가 생성되는 메모리를 스택 (stack)이라고 하는데, 스택에 생성되는 지역 변수는 함수가 노출될 때 생성되었다가
함수가 반환되면 할당되었던 메모리 공간이 해제되면서 함께 없어진다.
2. 멤버 변수의 유효 범위
클래스가 생성될 때 힙(heap) 메모리에 생성되는 변수이다.
힙에 의해 생성된 인스턴스가 가비지 컬렉터(garbage collector)에 의해 수거되면 메모리에서 사라진다.
따라서 클래스 내부의 여러 메서드에서 사용할 변수는 가급적 멤버 변수로 선언해 준다.
3. static 변수의 유효 범위
사용자가 실행한 프로그램의 영역 중 데이터 영역이 있다.
이 영역에 상수나 문자열, static 변수가 생성된다.
인스턴스 변수가 new를 이용해 새로운 객체를 생성하는 것과 달리 static 변수는 처음부터 데이터 영역 메모리에 생성된다.
따라서 인스턴스 변수와 static 변수는 사용하는 메모리가 다르다.
'Java' 카테고리의 다른 글
[Java] 배열 (0) | 2022.09.18 |
---|---|
[Java] Singleton (0) | 2022.09.18 |
[Java] static 변수 (0) | 2022.09.17 |
[Java] this를 이용하여 객체 간 협력하기 (0) | 2022.09.17 |
[Java] this를 사용하여 주소 값 반환하기 (0) | 2022.09.17 |