[JAVA] 자바 변수의 종류 (지역 변수, 클래스 변수, 인스턴스 변수)
- Archive/...2022
- 2021. 7. 14.
#1 변수의 종류
#1.1지역변수
#1.2클래스변수
#1.3인스턴스변수
* 개인적인 JAVA 공부 기록용으로 작성한 글 이기에, 잘못된 내용이 있을 수 있습니다.
#1 변수의 종류
자바의 변수는 지역변수 , 클래스 변수, 인스턴스 변수 3가지로 구분이 가능하다. 변수의 종류를 구분하는 기준은 "변수의 선언 위치"이다.
public class Knight {
int level; // 인스턴스 변수
static int HP; // 클래스 변수
void attack() {
int atk; // 지역 변수
}
}
위의 코드를 보면, 3가지의 int형 변수가 선언되어 있다. 우선 level과 HP는 클래스 내부에 선언되어 있는 변수 이기에 멤버 변수 이며, 멤버 변수중에서도 static 키워드가 붙은 변수를 클래스 변수 static 키워드가 붙지 않은 변수를 인스턴스 변수 라고 한다.
다음으로 메서드 내부에 선언 되어 있는 변수를 지역 변수라고 하는데, atk 는 attack() 메서드 안에 선언 되어 있으니 지역 변수라고 할 수 있다.
#1.1 지역 변수
선언부 : 클래스 이외 영역 (메서드, 생성자 등..)
메모리 할당 시기 : 변수 선언 코드를 만났을 경우
#1.2 인스턴스 변수
선언부 : 클래스 영역
메모리 할당 시기 : 인스턴스 생성 시
인스턴스 변수의 값을 참조하기 위해서는, 인스턴스를 먼저 생성해야만 한다. 인스턴스 변수는 객체 마다 다른 값을 가질 수 있기에, 각각의 객체의 고유한 값을 초기화 하고자 할 때는 인스턴스 변수로 선언한다.
#1.3 클래스 변수
선언부 : 클래스 영역
메모리 할당 시기 : 클래스가 메모리에 할당될 때
클래스 변수는 인스턴스 변수와 달리, 항상 일정한 값을 가지기에 모든 객체에 동일한 값을 주고자 할 때 클래스 변수로 선언한다.
또한 클래스 변수는 클래스명.클래스변수명 (ex. Knight.HP) 로 객체의 생성 없이 바로 접근이 가능하다.