Java에서 static의 의미와 장점 정리
이번 포스트에서는 지난 포스트에 이어서 Java에서 static이 무엇이고, 왜 사용하는지를 다시 한 번 정리해보겠습니다.
1. static의 기본 개념
Java에서 static은 객체(instance)가 아닌 클래스(class)에 소속된다는 의미.
즉,
- 일반 변수 / 메서드 → 객체마다 각각 존재
- static 변수 / 메서드 → 클래스당 하나만 존재
라는 차이가 있다.
2. static의 메모리 구조
static 변수와 메서드는 JVM 메모리 구조 중 Method Area(메서드 영역) 라는 공용 메모리 공간에 저장된다.
이 특징으로 인해 다음과 같은 성질을 가진다.
- 클래스가 로딩되는 시점에 생성
- 프로그램 종료 시까지 유지
- 모든 인스턴스가 동일한 static 멤버를 공유
3. static을 사용하는 이유 (이점)
1. 메모리 효율성
- 인스턴스마다 값을 가질 필요가 없는 데이터는 static으로 관리
- 불필요한 메모리 중복 제거
2. 공통 상태 관리
- 모든 객체가 공유해야 하는 값 (상수, 설정 값 등)에 적합
3. 객체 생성 없이 사용 가능
- 유틸리티 메서드에 적합
4. 왜 static 메서드에서는 인스턴스 변수를 사용할 수 없을까?
Q. 왜 static 메서드에서는 인스턴스 변수를 사용할 수 없나요?
A.
생성 시점이 다르기 때문입니다.
static 멤버는 클래스 로딩 시점에 이미 메모리에 올라가 있지만,
인스턴스 변수는 객체가 생성된 이후에야 존재합니다.
따라서 static 메서드에서는 아직 존재하지 않는 인스턴스 변수의 메모리 주소를 참조할 수 없습니다.
조금 더 쉽게 말하면,
- static → “객체가 없어도 이미 존재”
- 인스턴스 변수 → “객체가 있어야만 존재”
'Java' 카테고리의 다른 글
| [Java] Synchronized에 대해 - 2 (0) | 2026.01.26 |
|---|---|
| [Java] Synchronized에 대해 (0) | 2026.01.23 |
| [Java] static class와 static method (0) | 2026.01.16 |
| [Java] 리플렉션(Reflection) (0) | 2026.01.13 |
| [Java] 인터페이스와 추상클래스 (0) | 2026.01.10 |