JAVA_static

호근·2022년 12월 10일
0

java

목록 보기
16/35

static이란?

변수나 메서드를 선언할 때, 스태틱 제어자를 통해 클래스단위의 변수, 메서드로서 선언할 수 있다.

"클래스 단위"에서 선언된다는 의미는 인스턴스를 생성하지 않고도 사용가능함을 말한다.

생성된 인스턴스마다 다른 값을 가질 수 있다는 것은 좋은 기능이다.
하지만, 변하지 않는 값을 가져야 할 때가 있다.

이런 경우에 해당 변수(또는 메서드)를 static으로 제어하면 해당 변수는 클래스 멤버(변수,메서드)가 된다.


staic으로 제어된 변수를 클래스변수라고 하는 이유는
해당 변수가 존재하는 영역이 클래스가 존재하는 영역과 같기 때문이다.

static이 실행되는 시점은 클래스가 JVM에 의해 로드될 때,
다시말해 메모리에 클래스가올라가는 시점이다.

클래스에 관한 메모리는 Runtime Data Area의 클래스영역에 속해 모든 스레드에 의해 공유된다.


짚고 넘어가야할 점

  1. 클래스 내부에서는 static 변수(또는 메서드)로 직접접근이 가능하다.

  2. 클래스 이름으로 접근한 뒤 클래스의 인스턴스 생성 후 접근이 가능하다.

    • 인스턴스 변수와 구분이 어려워서 권장되지 않는다.

인스턴스변수의 값이 바뀌면
인스턴스 변수가 참조한 클래스의 변수는 바뀌지 않지만,

인스턴스의 원형클래스에서 static으로 제어된 a변수를
인스턴스가 직접 초기화하면,

인스턴스의 원형이 되는 클래스의 static a변수의 값도 초기화된다.

반대로 인스턴스의 원형이되는 클래스가 직접 a변수를 초기화해도
인스턴스의 변수는 초기화된다.

profile
22.11.28 ~

0개의 댓글