충분히 쌓여가는
선언 위치에 따른 변수의 종류 본문
선언위치에 따른 변수의 종류(1. 클래스 영역, 2. 메서드 영역)
클래스 영역엔 선언문만 가능(변수 선언, 메서드 선언), 순서 상관없음
public class Variables { // 클래스 영역 시작
int iv; // 인스턴스 변수
static int cv; // 클래스 변수(static 변수, 공유 변수)
void method() { // 메서드 영역 시작
int lv = 0; // 지역변수
} // 메서드 영역 종료
} // 클래스 영역 종료
변수의 종류 | 선언위치 | 생성시기 |
인스턴스 변수 (instance variable) |
클래스 영역 | 인스턴스가 생성되었을 때(객체 생성 필수) |
클래스 변수 (class variable) |
클래스가 메모리에 올라갈 때(자동 생성) | |
지역 변수 (local variable) |
클래스 영역 이외의 영역 (메서드 생성자, 초기화 블럭 내부) |
변수 선언문이 수행되었을 때 |
인스턴스 변수 (instance variable)
객체라는 것이 instance variable로 이루어져 있다고 생각하기
객체 = iv를 묶어놓은 것(정확히 말하면 틀린 것이긴 함)
객체 생성 반드시 필요함
iv는 참조변수가 없어지면 Garbage Collection(가비지 컬렉션)에 의해 사라짐
클래스 변수 (class variable)
클래스가 메모리에 올라갈때 자동으로 만들어짐
파일을 메모리에 올릴때, 즉 클래스가 메모리에 올라감
인스턴스 변수를 객체를 만들어야되지만 클래스 변수는 자동으로 만들어짐
객체 생성 필요 없음, 아무때나 사용 가능
지역 변수(local variable)
메서드가 호출되고 메서드가 종료될때까지 사용 가능
'Java > 객체지향' 카테고리의 다른 글
메서드(method) (0) | 2023.05.25 |
---|---|
인스턴스 변수와 클래스 변수 (0) | 2023.05.24 |
클래스의 정의 (0) | 2023.05.22 |
객체 배열 (0) | 2023.05.22 |
인스턴스 생성과 사용 (0) | 2023.05.21 |