자바에의 클래스에서 사용할 수 있는 변수의 종류는 총 3가지가 있다.
이 3가지에 대해서 알아보자.
변수의 종류는 선언된 위치에 따라 정해진다.
따라서 3가지의 변수 종류를 구분하기 위해서는 해당 변수가 선언된 위치를 파악해야 한다.
종류 | 선언위치 | 생성시기 |
클래스 변수(static 변수) |
클래스의 내의 변수 선언 위치 (클래스 영역) |
클래스가 메모리에 올라갈때 |
인스턴스 변수 | 객체(인스턴스)가 생성될때 | |
지역 변수 |
메서드, 생성자, 초기화 블럭등의 내부 (클래스 영역 외의 영역) |
변수의 선언문이 실행 될때 |
아래와 같은 소스를 작성했다고 가정해보자
public class TestClass {
int intstance;
static int staticVal;
void method() {
int local = 0;
}
}
위의 코드는 아래와 같이 클래스 영역과 메서드 영역으로 나누어진다.
1. 클래스 변수
- 선언부에 'statis'을 붙인다.
- 인스턴스를 생성하지 않아도 사용 가능하다.
- 클래스 메서드는 인스턴스 변수를 사용할 수 없다.
- 클래스 변수는 모든 인스턴스(객체)가 공통 메모리 공간을 사용하여 같은 주소를 참조하게 된다.
- 모든 인스턴스가 클래스 변수의 값을 공유하게 된다는 뜻이다.
- 클래스가 로딩될 때 생성되어 프로그램이 종료될 때까지 유지되는 특징을 지닌다.
2. 인스턴스 변수
- 인스턴스가 생성될 때 생성된다.
- 각각의 인스턴스 별로 독립적인 저장공간을 가진다.
- 모든 인스턴스가 서로 다른 값을 가질 수 있다.
3. 지역변수
- 위에서 지역 변수인 local은 메서드 영역에서 선언되었다.
- 메서드가 호출되어 종료될 때까지 유효하며 종료된 이후에는 해당 변수를 사용할 수 없다.
- {} 블럭 내의 범위에서만 사용이 가능하다.
아래의 글에서 클래스 변수와 인스턴스를 예제를 통해 비교해 보자
2019/04/19 - [자바/기본] - 클래스 변수와 인스턴스 변수의 비교
반응형
'Java & 스프링 > Java' 카테고리의 다른 글
[Java] JVM이란? (0) | 2019.04.20 |
---|---|
[Java] 클래스 변수와 인스턴스 변수의 비교 (0) | 2019.04.19 |
자바의 기본형(변수 타입) (0) | 2019.04.18 |
Java의 특징과 JVM, JDK, JRE (0) | 2019.04.18 |
Java 환경변수 설정 하기 (0) | 2019.04.17 |
댓글