반응형
✔️ 정적(Static) 이란?
Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미합니다.
Static이라는 키워드를 사용하여 Static변수(정적 필드)와 Static메서드(정적 메서드)를 만들 수 있는데 이 둘을 합쳐 정적 멤버라고 합니다. 정적 멤버는 객체(인스턴스)에 속한 멤버가 아니가 클래스에 소속된 멤버이기 때문에 클래스 멤버라고도 합니다.
정적 변수
정적 변수는 객체를 생성하지 않아도 메모리에 할당되며, 프로그램이 종료될 때 해제됩니다.
고정적이면서 프로그램 전체에 공유하고자 하는 변수가 필요할 때 사용합니다.
정적 메서드
정적 메서드 역시 객체를 생성하지 않아도 메모리에 할당되며,
내부에 인스턴스 필드나 메서드를 사용할 수 없습니다. (객체가 생성되지 않았기 때문)
정적 멤버 선언
정적 필드, 정적 메서드를 선언하는 방법은 필드와 메서드 선언 시 static 키워드를 붙이는 것입니다.
static int num = 0; // static 타입 필드 [= 초기값]
public static void method1(){ } // static 리턴 타입 메소드([매개변수, ..]) { }
정적 멤버는 객체 내부가 아니라 별도의 공간에서 생성되어 메모리 형태로 관리됩니다.
클래스가 로딩되는 순간 정적 멤버가 생성되고, 객체를 생성하기도 전부터 메모리 상에 존재하게 됩니다. 객체가 사라져도 해당 멤버는 사라지지 않고, 모든 동일 클래스의 객체 사이에서 공유됩니다.
즉, 클래스 로더가 클래스를 로딩해서 메서드 메모리 영역에 적재할 때 클래스 별로 관리되기 때문에 클래스의 로딩이 끝나면 바로 사용할 수 있습니다.
References
반응형
'🗂 Study > 자바' 카테고리의 다른 글
[Java] 객체지향이란? (0) | 2021.08.25 |
---|---|
[Java] 접근제한자 (0) | 2021.08.19 |
[Java] 클래스(Class)와 객체(Object) (0) | 2021.07.30 |
[Java] 추상 클래스와 인터페이스의 차이점 (0) | 2021.07.23 |
[Java] 오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2021.07.14 |
댓글