1. 멤버 변수 (Member Variable)
정의
- 클래스 내에서 선언된 변수로, 객체의 속성을 나타냄.
- *필드(Field)**라고도 불리며, 객체가 생성될 때 함께 생성된다.
특징
- 선언 위치:
- 클래스 내부, 메서드나 생성자 외부에서 선언됨.
- 메모리 영역:
- 힙(Heap) 메모리에 저장됨 (인스턴스 변수의 경우).
- 초기화:
- 별도로 초기화하지 않아도 기본값으로 자동 초기화됨.
- 숫자형:
0, 0.0
- 논리형:
false
- 참조형:
null
- 수명:
- 객체가 생성될 때 할당되고, 객체가 소멸될 때까지 존재.
- 종류:
- 인스턴스 변수: 객체마다 독립적으로 존재.
- 클래스 변수:
static 키워드가 붙어 클래스에 고정된 변수.
예제
public class Example {
int instanceVar;
static int staticVar;
public void display() {
System.out.println("Instance Variable: " + instanceVar);
System.out.println("Static Variable: " + staticVar);
}
}
2. 지역 변수 (Local Variable)
정의
- 메서드, 생성자, 블록 내부에서 선언된 변수로, 해당 영역 내에서만 사용 가능.
특징
- 선언 위치:
- 메모리 영역:
- 초기화:
- 수명:
- 해당 블록 실행 시 생성되고, 블록이 종료되면 소멸됨.
- 접근 제한:
예제
public class Example {
public void display() {
int localVar = 10;
System.out.println("Local Variable: " + localVar);
}
}
3. 멤버 변수와 지역 변수 비교
| 구분 | 멤버 변수 | 지역 변수 |
|---|
| 선언 위치 | 클래스 내부, 메서드 외부 | 메서드, 생성자, 블록 내부 |
| 메모리 영역 | 힙(Heap) 메모리 | 스택(Stack) 메모리 |
| 초기화 여부 | 자동으로 기본값으로 초기화 | 반드시 명시적으로 초기화 필요 |
| 수명 | 객체가 소멸될 때까지 존재 | 선언된 블록이 종료되면 소멸 |
| 접근 범위 | 클래스 전체에서 접근 가능 | 선언된 블록 내부에서만 접근 가능 |
| 종류 | 인스턴스 변수, 클래스 변수 | 블록 내 로컬 변수 |
4. 예제 코드 비교
public class VariableExample {
int instanceVar = 10;
static int staticVar = 20;
public void method() {
int localVar = 30;
System.out.println("InstanceVar: " + instanceVar);
System.out.println("StaticVar: " + staticVar);
System.out.println("LocalVar: " + localVar);
}
public static void main(String[] args) {
VariableExample obj = new VariableExample();
obj.method();
}
}
실행 결과
InstanceVar: 10
StaticVar: 20
LocalVar: 30
요약
- 멤버 변수:
- 클래스 내부에서 선언되며 객체의 속성.
- 자동으로 기본값으로 초기화되며, 객체의 생명주기 동안 유지.
- 지역 변수:
- 메서드나 블록 내부에서 선언되며, 해당 영역 내에서만 사용 가능.
- 반드시 초기화 후 사용해야 하고, 블록이 종료되면 소멸.