SHUSTORY

06-4 변수 유효 범위 본문

프로그래밍/JAVA

06-4 변수 유효 범위

어서오시우 2023. 2. 23. 02:40
728x90

변수 유효 범위

  • 지역 변수(로컬 변수)_함수나 메서드 안에서만 사용 가능하다.
    • 다른 함수에서 사용 불가능하며, 지역 변수가 생성되는 메모리를 스택이라고 한다. 스택에 생성되는 지역 변수는 함수가 호출될 때 생성되었다가 함수가 반환되면 할당되었던 메모리 공간이 해제되면서 함께 없어진다.
  • 멤버 변수(인스턴스 변수)_클래스 안에서 사용한다.
    • 클래스가 생성될 때 힙 메모리에 생성된다.
    • 클래스 내부의 어느 메서드에서나 사용 가능하다.
    • 힙에 생성된 인스턴스가 가비지 컬렉터에 의해 수거되면 메모리에서 사라진다.
  • static 변수(클래스 변수)_여러 인스턴스에서 공통으로 사용한다.
    • 사용자가 프로그램을 실행하면 메모리에 프로그램이 상주하고, 이때 프로그램 영역 중 데이터 영역이 있다. 이 영역에는 상수, 문자열, static 변수가 생성된다. 인스턴스 변수는 생성되는 문장, new가 되어야 생성되지만 static 변수는 클래스 생성과 상관 없이 처음부터 데이터 영역 메모리에 생성된다. 따라서 인스턴스 변수와 static 변수는 사용하는 메모리가 다르다.
    • static 변수는 private이 아니라면 클래스 외부에서도 객체 생성과 무관하게 사용 가능하다.
    • 프로그램이 끝난 뒤 메모리에서 내려가면 static 변수도 소멸된다.

변수는 어디에 어떻게 선언되느냐에 따라 유효 범위( scope )가 달라진다.

 

 

변수 유형에 따른 용도

변수 유형 선언 위치 사용 범위 메모리 생성과 소멸
지역 변수
(로컬 변수)
함수 내부에 선언 함수 내부에서만 사용 스택 함수가 호출될 때 생성되고 함수가 끝나면
소멸됨
멤버 변수
(인스턴스 변수)
클래스 멤버 변수로
선언
클래스 내부에서 사용하고 priavate이 아니면 참조 변수로 다른 클래스에서 사용함 인스턴스가 생성될 때 힙에 생성되고, 가비지 컬렉터가 메모리를 수거할 때 소멸됨
static 변수
(클래스 변수)
static 예약어를 사용하여 클래스 내부에 선언 클래스 내부에서 사용하고 private이 아니면 클래스 이름으로 다른 클래스에서 사용 가능 데이터 영역 프로그램이 처음 시작할 때 상수와 함께 데이터 영역에 생성되고 프로그램이 끝나고 메모리를 해제할 때 소멸됨

메모리를 효율적으로 사용하며 코드의 가독성을 높이기 위해 특성에 맞게 변수를 선언해서 사용하도록 하자.

'프로그래밍 > JAVA' 카테고리의 다른 글

07-2 다차원 배열  (0) 2023.02.25
07-1 배열  (0) 2023.02.24
06-3 static 변수  (0) 2023.02.23
06-2 객체 간 협력  (1) 2023.02.23
06-1 this 예약어  (1) 2023.02.22