로재의 개발 일기
static 변수
static 변수에 대해서 다들 분명 알 것이다.
코딩을 1달만 해도 아는, static 예약어
오랜만에 Do-it 자바 프로그래밍 입문 서적을 꺼내보다가
부족한 부분이 있어서 틈틈히 정리를 시작하게 되었다.
우선 오늘은 static 변수!!
static이란 무엇인가?
static 변수란, 다른 용어로 '정적 변수'라고 한다.
자바 뿐만이 아니라 타 언어에서도 비슷한 개념으로 사용되고 있는 변수로
자바에서는 다른 멤버 변수처럼 클래스 내부에서 선언을 한다.
1 | static int value; | cs |
static의 생성 시기
static 변수는 클래스 내부에서 선언하지만, 다른 멤버 변수처럼 인스턴스(클래스를 통해서 할당된 실체)가
생성될 때 생성되는 변수는 아니다.
static 변수는 프로그램이 실행되어 메모리에 올라갔을 때
한번만 '메모리 공간'에 할당되는 변수이다.
변수 | 생성 시기 | 소멸 시기 | 메모리 영역 | 호출 사용법 |
클래스 변수 | 클래스가 메모리에 올라감 | 프로그램 종료 (서버 종료) | 메소드 영역 | 클래스 이름, 인스턴스의 변수 이름 |
인스턴스 변수 | 인스턴스가 생성됌 | 인스턴스가 소멸됌 | 힙 영역 | 인스턴스 이름, 변수 이름 |
지역 변수 | 블록 안에서 변수가 선언됌 | 블록을 나올때 | 스택 영역 | 변수 이름 |
즉, 모든 인스턴스가 공유할 수 있으며
디자인 패턴 기법의 '싱글톤'에서 하나의 변수를 공유하기 위해서
사용할 수 있다는 자연스러운 흐름이 다가왔다.
static의 생성 시기
데이터 영역 -> 스택 메모리 -> 힙 메모리
위를 따르며
static 메소드의 경우도 마찬가지이다.
매우 중요하다고 생각합니다.
(이후에 자바 코어, 스프링 코어를 공부할 때 기본적인 지식)
마무리
간략하게 설명한 static
설계하기 나름인것 같습니다.
- 다음 글 -
> [Java] static 변수에 대해서 알아보자 (실전편) <
'백엔드 > 부족한 기본 정리' 카테고리의 다른 글
[Java 8] 람다식을 사용해보자 How to use lamda (0) | 2020.11.03 |
---|---|
[Java] Overriding 을 막는 세가지 기법 private, static, final (2) | 2020.09.02 |
[Java] static 변수에 대해서 알아보자 (실전편) (2) | 2020.08.25 |
댓글