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, 객체생성을 해야만 쓸 수 있다.
'프로그래밍 언어 > 자바의 정석 기초편' 카테고리의 다른 글
자바의 정석 기초편 ch6-14~16 메서드란? 메서드의 선언부와 구현부 (0) | 2022.06.30 |
---|---|
자바의 정석 기초편 ch6-12,13 클래스 변수 인스턴스 변수 (0) | 2022.06.30 |
자바의 정석 기초편 ch6-9,10 클래스의 정의 (0) | 2022.06.22 |
자바의 정석 기초편 ch6-8 객체배열 (0) | 2022.06.22 |
자바의 정석 기초편 ch6-6, 7 객체의 생성과 사용 (0) | 2022.06.22 |