본문 바로가기
프로그래밍 언어/자바의 정석 기초편

자바의 정석 기초편 ch6-11 선언위치 변수종류

by life grow 2022. 6. 30.

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

 

변수는 선언 위치에 따라 변수의 종류가 달라진다.

클래스 안에는 영역이 2가지가 있다.

클래스 영역, 메서드 영역

 

클래스 영역 

1. iv == 인스턴스 변수

2. cv == 클래스 변수

cv는 iv(인스턴스 변수) 앞에다가 static을 붙인 것이다.

클래스 영역 안에는 선언문만 가능하다.

System.out.println(); 같은 거 안됨 

선언문의 순서는 상관 없다.(일반적으로 변수 선언을 먼저 한다.)

 

메서드 영역

1.lv == 지역변수

 

메소드 영역을 클래스 영역 이외의 영역이라고 할 수 있다.

클래스 안에는 영역이 2가지 밖에 없으니까

lv는 메서드가 호출되면 메서드 영역 안에서

메서드가 끝날때까지 유효하다.

void method()

{

}  >변수의 범위

메서드가 끝나면 lv(지역변수)도 사라진다.

 

iv하고 cv는 클래스 영역 전체에서 사용가능하다. 

 

객체는 iv 변수들을 묶어 놓은 것이다.

객체를 만들면 iv들이 만들어진다.

 

클래스가 메모리에 올라갈 때?

클래스가 필요할 때, 클래스 == 설계도

설계도가 필요할 때? 객체를 만들 때

 

우리가 가지고 있는 파일들은 디스크에 저장되어있다.

Time.class파일(설계도)을 cpu가 이걸 직접 못가져온다.

왜? 속도차이 때문에 안된다. cpu가 훨씬 빠르다.

그래서 중간에 둔 게 메모리(RAM)다.

 

파일을 읽으려면 메모리에 올려야한다.(이걸 로딩이라고 한다.)

Time.class 파일이 메모리에 로딩되면 그때 cpu가 Time.class파일을 읽고 쓸 수 있다.

cpu는 모든 작업을 메모리하고만 한다.

작업이 끝나면 디스크에 저장한다.(save)

 

로딩: 디스크에서 파일을 메모리로 올리는 것

save: 우리가 작업한 내용을 다시 디스크에 저장하는 것.

작업한 내용을 저장하지 않고 끄면 다 날라가 버린다. 그래서 저장함

 

우리가 모든 작업을 하려면

파일이 메모리에 올라와야한다.

그것이 클래스가 메모리에 올라간다고 표현한다.

올라가면 그때 자동으로 클래스 변수가 만들어진다.

cv는 객체생성x, 아무때나 사용가능하다.

iv는 객체생성o, 객체생성을 해야만 쓸 수 있다.