본문 바로가기
back-end/JAVA

7)객체지향-선언 위치에 따른 변수의 종류

by 모두의 향연 2021. 5. 11.
728x90
반응형

7) 객체지향-선언 위치에 따른 변수의 종류

 

선언 위치에 따라 변수는 3가지로 나눠집니다.

어느 변수를 먼저 쓰든 순서는 상관없습니다.

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

 

 

 

영역 변수 종류 생성시기
클래스영역(클래스 시작부터 끝까지: 선언문만 가능 인스턴스변수
(instance valiable:
iv)
인스턴스가 생성되었을 때
클래스변수
(class valiable: 
cv: 
인스턴스변수 앞에 static붙인것)
클래스가 메모리에 올라갈 때
클래스영역 이외의 영역(메서드, 생성자, 초고화블럭 내부) 지역변수
(local valiable:
lv)
변수 선언문이 수행되었을 때

 

-lv는 메서드 영역 내에서만 써야 합니다. iv와 변수 이름이 같다 해도 서로 다른 변수라는 걸 잊지 마세요.

 

-iv의 생성시기는 인스턴스가 생성되었을 때인데, 즉 객체가 생성되었을 때 생성됩니다.

왜죠? 객체는 무엇의 묶음이죠? iv들의 묶음이죠? 그러니 iv는 객체가 생성되었을 때 생성되는 겁니다.

'변수가 선언'되었을 때가 아니라 '객체가 생성'되었을 때라는 점 잊지 마세요.

 

-cv는 클래스(설계도)가 메모리에 올라갈 때 생성이 되는데, 설계도가 메모리에 올라가는 이유는 필요하니까 올라가는 겁니다.

그럼 설계도는 언제 필요하나요? 객체를 만들 때 필요하지요? 객체를 만들기 전에 설계도가 먼저 메모리에 올라가야 합니다. 그래야 설계도를 보고 객체를 만들지요.

파일이 작업하기 위해 HDD, SSD에서 RAM(메모리)으로 올라오는데 이와 마찬가지로,

작업을 하기 위해 클래스가 HDD, SSD에서 RAM(메모리)로 올라오는 것과 같은 맥락입니다.

Time.class는 메모리에 올라갈 때 자동으로 만들어집니다.

iv는 객체를 만들어야 했지만, cv는 객체 생성 없이 자동으로 만들어집니다.

그냥 아무 때나 사용 가능하다고 생각하면 됩니다.

 

*유튜브 남궁성 선생님의 `자바의 정석`을 참고하여 만들었습니다*
*자세히 보고 싶은 분들은 유튜브 가서 보시면 되고요! 저는 개인적으로 공부하는 게 목적입니다*

728x90
반응형