본문 바로가기
개발자 전향 프로젝트

[JAVA] 선언되는 위치에 따라 달라지는 변수의 타입 (CV,IV,LV)

by 샘오리 2022. 3. 19.
728x90
반응형

변수가 선언되는 영역은 두 가지로 나뉜다.

 

1. 클래스 영역 ------------||------------- 2. 메서드 영역

 

 

 

클래스 영역은 메서드 영역을 제외한 모든 영역을 말하고

메서드 영역은 메서드 내에서만 존재하는 영역을 말한다.     

 

*메서드: 어떠한 특정 작업을 수행하기 위한 명령문의 집합

 

실생활로 빗대자면 우리가 기숙사에 거주하고 있다고 가정 한다면

클래스 영역은 각자의 방을 제외한 모든 곳(편의시설, 식당, 복도, 등등)을 나타내고

 

메서드 영역각자의 방이 되겠다.

그렇다면 클래스 영역에 선언되는 변수와

메서드 영역에 선언되는 변수는 어떤 게 있을까?

 

클래스 영역:  클래스 변수, 인스턴스 변수

메서드 영역: 지역 변수

 

클래스 변수와 인스턴스 변수는 클래스 영역(글로벌 영역)에 선언된다는 공통점을 갖고 있음으로

이 둘을 하나로 묶기도 하는데 전체 영역에 걸쳐있다 하여 전역 변수 또는 멤버 변수라고도 부른다.

 

 

그렇다면 이 둘의 차이는 무엇일까?

인스턴스 변수와 클래스 변수의 차이

용도의 차이

클래스 변수는 static을 앞에 붙여 구분하며 모든 인스턴스들이 공통적인 값을 가져야 할 때 클래스 변수로 선언한다. 반면 인스턴스 변수는 각각의 인스턴스마다 고유의 값을 가져야할 때 선언한다.

 

자동차를 구현한다고 가정한 예:

클래스 변수 사용해야 할 때:

 자동차라면 다 있는 공통적인 요소들 -> 엔진, 바퀴 , 배출구 등등

인스턴스 변수 사용해야 할 때:

자동차마다 다 다른 개성 있는 요소들 -> 브랜드 이름, 페인트 색, 차 번호판 숫자 등등 

 

 

호출하는 방법의 차이

인스턴스 변수를 가져오기 위해서는 인스턴스를 먼저 생성해야 하는데 클래스 변수는 인스턴스 변수의 접근법과 다르게 인스턴스를 생성하지 않고 클래스 이름. 클래스 변수명을 통해서 접근할 수 있다.

 

그렇다면 지역 변수는 무엇일까?

지역변수란 메서드 내에서만 선언되어 그 안에서만 사용 가능한 변수로 메서드가 끝나는 중괄호를 벗어나면 자동적으로 소멸되어 사용할 수 없다. 그래서 이를 휘발성 메모리라고도 한다.

 

메소드가 선언이 되면 중괄호 안팎이 지역변수의 활동 범위

 

728x90
반응형