<JAVA> 전역변수와 지역변수
자바의 변수는 선언위치
에 따라 크게 전역변수와 지역변수로 나뉜다
- 어느 위치에서든 호출이 가능하면
전역변수
- 특정 구역 내에서만 사용 가능하면
지역변수
전역변수의 경우는 그 내에서도 클래스 변수와 인스턴스 변수로 나뉜다
public class Test {
int var1; // 인스턴스 변수 (전역변수)
static int var2; // 클래스 변수 (전역변수)
public void fun() {
int var3; // 지역 변수 (지역변수)
}
}
변수종류 | 선언위치 | 생성시기(메모리 할당 시기) |
---|---|---|
클래스 변수 | 클래스 영역 | 클래스가 메모리에 올라갔을 때 |
인스턴스 변수 | 클래스 영역 | 인스턴스가 생성될 때 |
지역 변수 | 클래스 이외의 영역 | 변수 선언문이 수행되었을 때 |
인스턴스 변수
클래스 영역에 선언되고, 인스턴스(객체)를 생성할 때 만들어짐
- 인스턴스의 변수 값을 가져오기 위해선 일단 인스턴스를 생성해줘야 함
- 인스턴스는 독립적인 저장공간을 가지기 때문에 서로 다른 값을 가질 수 있음
클래스 변수
인스턴스에 static 만 붙이면 되고, 클래스가 로딩 될 때 만들어짐
- 인스턴스 변수와 달리 클래스 변수는 공통된 저장공간을 사용
- 클래스가 로딩 시 (메모리에 올라갔을 때) 생성되어 프로그램이 종료 될 때까지 유지되됨
지역 변수
메소드 내에서만 사용 가능
- 메소드가 실행될 때 메모리를 할당 받으며 메소드가 끝나면 소멸 되어 사용할 수 없음
레퍼런스
[JAVA] 자바의 변수 (클래스 변수, 인스턴스 변수, 지역 변수)
[Java] 클래스 / 인스턴스 / 지역변수 쉽게 이해하기