Java - static 키워드에 대해 알아보자.
Java - static 키워드에 대해 알아보자.
static 키워드
static이란 인스턴스를 직접 생성하지 않고도 접근이 가능한 상태를 만들도록 하는 키워드이다.
static 키워드의 특징은 아래와 같다.
- 클래스가 처음 참조될 때 JVM이 로딩하고
static키워드가 붙은 요소는 메서드 영역(static 영역)에 올라가짐 - 인스턴스를 생성하지 않아도 접근 가능
- 공유 자원으로 동작함 (모든 인스턴스가 같은 값 공유)
이러한 특성 때문에 주로 Util 메서드, 상수 선언에 사용된다.
static 예시 1
1
2
3
4
5
6
7
public class ExampleUtils{
public static void checkNull(Integer number){
if(number == null){
throw new RuntimeException("값이 null입니다.");
}
}
}
static 예시 2
1
2
3
public interface Constants{
public static final String CONSTANT_VALUE = "Hello";
}
인터페이스의 변수는 무조건
public static final이 붙기 때문에 생략할 수 있다.
static 사용 예시
1
2
3
4
public static void main(String[] args){
ExampleUtils.checkNull(1);
System.out.println(Constants.CONSTANT_VALUE);
}
static 키워드에 단점
static 키워드에 단점으로는 아래와 같다.
static변수나 메서드는 클래스가 처음 참조될 때 JVM의 메서드 영역에 올라가며 일반적인 GC 대상은 아님- JVM이 종료되거나 클래스 언로딩이 발생하면 제거됨
- 잘못 사용하면 메모리를 계속 점유하여 메모리 누수의 원인이 될 수 있음
- 모든 인스턴스가 동일한
static값을 공유하므로 멀티스레드 환경에서 동기화 문제가 발생할 수 있음 - 테스트나 의존성 주입이 어려워 객체지향 설계 원칙(SRP, DIP 등)을 위반하기 쉬운 구조가 될 수 있음
This post is licensed under CC BY 4.0 by the author.