쯔이's Dev

static(2) - static 변수 본문

카테고리 없음

static(2) - static 변수

jjhim531 2024. 8. 1. 01:50
반응형

< 멤버 변수(필드)의 종류 >

* 인스턴스 변수 : static 이 붙지 않은 멤버 변수.       예) String  name

  • static 이 붙지 않은 멤버 변수는 인스턴스를 생성해야 사용할 수 있고, 인스턴스에 소속되어 있다. 따라서 인스턴스 변수라 한다.
  • 인스턴스 변수는 인스턴스를 만들 때 마다 새로 만들어진다

.

* 클래스 변수 : static 이 붙은 멤버 변수.  예) static  int  count

  • 클래스 변수, 정적 변수, static 변수등으로 부른다. 용어를 모두 사용하니 주의.
  • static 이 붙은 멤버 변수는 인스턴스와 무관하게 클래스에 바로 접근해서 사용할 수 있고, 클래스 자체에 소속되어 있다. 따라서 클래스 변수라 한다.
  • 클래스 변수는 자바 프로그램을 시작할 때 딱 1개가 만들어진다. 인스턴스와는 다르게 보통 여러곳에서 공유하는 목적으로 사용된다.

 

< 변수와 생명주기 >

* 지역 변수(매개변수 포함)

  -  스택 영역에 있는 스택 프레임 안에 보관된다.

     메서드가 종료되면 스택 프레임도 제거 되는데 이때 해당 스택 프레임에 포함된 지역 변수도 함께 제거된다.

     따라서 지역 변수는 생존 주기가 짧다.

 

* 인스턴스 변수

  - 인스턴스에 있는 멤버 변수를 인스턴스 변수라 한다. 힙 영역을 사용한다.

     힙 영역은 GC(가비지 컬렉션)가 발생하기 전까지는 생존하기 때문에 보통 지역 변수보다 생존 주기가 길다.

 

* 클래스 변수

   메서드 영역의 static 영역에 보관되는 변수.

   메서드 영역은 프로그램 전체에서 사용하는 공용 공간이다.

   클래스 변수는 해당 클래스가 JVM에 로딩 되는 순간 생성되고 JVM이 종료될 때 까지 생명주기가 이어진다.

   static 인 정적 변수는 거의 프로그램 실행 시점에 딱 만들어지고, 프로그램 종료 시점에 제거된다.

   따라서 가장 긴 생명주기를 가진다.

 

< 정적 변수 접근법 >

static 변수는 클래스를 통해 바로 접근할 수 있다.

static 이 붙은 정적 변수에 접근하려면 Data3.count 와 같이 클래스명 + . (dot) + 변수명으로 접근하면 된다.

참고로 Data3 의 생성자와 같이 자신의 클래스에 있는 정적 변수라면 클래스명을 생략할 수 있다

728x90
반응형