반응형

선언위치에 따른 변수의 종류

지금까지는 변수의 type에 대해서만 이야기 했는데,
이번에는 변수의 종류에 대해서 공부해 보도록 하자.

변수의 종류는, 어디에 선언했냐에 따라서,
즉, 선언 위치에 따라서 종류가 3가지로 나뉜다

  • iv (인스턴스 변수 instance variable)
  • cv (클래스 변수 class variable, (static + iv))
  • lv (지역 변수 local variable)

일단, 클래스안에는 영역이 2가지가 있다.
1.  클래스 영역 
2. 메서드 영역

이때,
클래스 영역에 선언된 변수iv (인스턴스 변수 - instance variable), cv(static + iv)
매서드 영역에 선언된 변수lv (지역 변수 - local variable)

만약에 cv앞에 static을 없애면 iv가 된다.

영역같은 경우에는, 메서드 영역이 아니라면 클래스 영역인 것이다.
왜냐하면 영역은 2개밖에 없기떄문이다. 때문이다.떄문이다. 

클래스 영역은 클래스의 시작부터 클래스 끝까지이고,
메서드 영역은 void mathod(){부터 }까지이다.

그리고 클래스 영역에는 선언문만 가능하다.
변수 선언,
메서드 선언만 가능하다.

위의 클래스 에서
void method(){ }가 메서드 선언인데,
정확히 말하면 
void method()부분이 메서드 선언이고
void method() 와{ } 부분 내용까지 포함해서 이야기 할 때는,  메서드 정의라고 말한다.
지금은 이 두개를 너무 구분짖지는 말자.

아무튼 클래스 영역에는 선언문만 가능하다. (변수 선언, 메서드 선언)

정리 해보면,

cv는 클래스 영역에서 선언되며, 클래스가 메모리에 올라갈 때 생성된다. 
즉, 클래스가 필요할 때,  객체 생성을 하지 않아도 메모리에 올라가기만 하면 생성된다.
그냥 아무때나 사용 가능하다.

iv는 클래스 영역에서 선언되며, 생성시기는 인스턴스가 생성되었을 때 생성된다.
즉, 객체를 생성했을 때 클래스에 선언된것을 보고 iv가 생성된다. (객체는 iv를 묶어놓은 것)
객체를 생성해야 사용할 수 있다.

lv는 클래스영역 이외의 영역에서 선언되며, 변수 선언문이 수행되었을 때 생성된다.
즉, 메서드 영역에서 변수가 선언되었을 때, 생성되고, 메서드영역이 변수의 scope범위이며 메서드 종료시 자동제거된다.

 

오늘 내용 간단 정리

  • 영역
    • 클래스 영역
      • iv
        • 객체 생성시 iv생성 (객체는 iv변수 묶음이다)
      • cv (statiac + iv)
        • 클래스가 메모리에 올라갈 때, 객체 생성필요없이 자동으로 생성)
    • 메서드 영역(클래스 영역 이외의 영역)
      • lv
        • 메서드에서 변수 선언문이 수행되었을 때
반응형

'JAVA' 카테고리의 다른 글

메서드란? 메서드의 선언부와 구현부  (0) 2022.03.25
클래스 변수와 인스턴스 변수  (0) 2022.03.25
클래스의 정의  (0) 2022.03.24
객체 배열  (0) 2022.03.24
객체의 생성과 사용  (0) 2022.03.24