모든지 기록하자!

[Java] 변수의 유효 범위 (scope) 본문

Java

[Java] 변수의 유효 범위 (scope)

홍크 2021. 5. 13. 23:44
728x90

1. 지역변수( 로컬 변수, local variable)

지역변수는 함수나 메서드 내부에 선언하기 때문에 함수나 메서드 안에서만 사용할 수 있다.

지역 변수가 생성되는 메모리를 스택(stack)이라고 한다. 스택에 생성되는 지역 변수는 함수가 호출될 때 생성되었다가 함수가 반환되면 할당되었던 메모리 공간이 해제되면서 같이 없어진다.

 

2. 멤버 변수( 인스턴스 변수, instance variable)

클래스가 생성될 때 힙(heap) 메모리에 생성되는 변수 멤버 변수는 클래스의 어느 메서드에서나 사용할 수 있다. 힙에 생성된 인스턴스가 가비지 콜렉터(garbage collertor)에 수거되면 메모리에서 사라진다.

클래스 내부의 여러 메서드에서 사용할 변수는 멤버 변수로 선언하는 것이 좋다.

 

3. static변수( 클래스 변수, class variable)

인스턴스 변수는 객체가 생성되는 문장 , new가 되어야 생성되지만 static변수는 클래스의 생성과 관계없이 처음부터 데이터 영역 메모리에 생성된다. 따라서 인스턴스 변수와 static변수는 사용하는 메모리가 다르다. static변수는 private가 아니라면 클래스 외부에서도 객체 생성과 무관하게 사용할 수 있다. 

프로그램 실행이 끝난 뒤 메모리에서 내려가면 static변수도 소멸된다.

 

변수는 특성에 맞게 선언해서 사용하는 것이 중요하다. 용도에 따라 변수 유형을 명확히 정해서 효율적으로 프로그래밍 하자!

728x90
Comments