[Java] static 생성 시점

아현·2021년 12월 23일
0

Java

목록 보기
8/13

출처


1. static 이란?


  • static 변수

    • 클래스 변수이다.

    • 클래스가 정의만 되어도 접근이 가능한 변수

      • 인스턴스 변수는 인스턴스가 생성되었을때 접근 가능
 

class InstCnt
{
  static int instNum=0;
   
  public InstCnt()
  {
    instNum++;
    System.out.println("인스턴스 생성: "+instNum);
  }
}
 
class ClassVar
{
  public static void main(String[] args)
  {
    InstCnt cnt1=new InstCnt();
    InstCnt cnt2=new InstCnt();
    InstCnt cnt3=new InstCnt();
  }
}

//실행 경과는

//인스턴스 생성 : 1

//인스턴스 생성 : 2

//인스턴스 생성 : 3


 
  • static으로 선언된 변수는 선언된 클래스의 모든 인스턴스가 공유하게 됩니다.



static 변수의 초기화 시점


  • JVM에 의해서 클래스가 메모리 공간에 올라가는 순간
  • 그렇다면 자바 가상머신 메모리

    • 메소드영역

    • 스택영역

    • 힙영역

  • 메모리 영역별 데이터

    • 메소드 영역 : 메소드의 바이트 코드, static변수

    • 스택 영역 : 지역변수, 매개변수

    • 힙 영역 : 인스턴스



static 변수의 활용


  • 인스턴스 간에 데이터 공유가 필요한 상황.

    • 싱글턴 패턴으로 이어지는 개념

소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다.



profile
For the sake of someone who studies computer science

0개의 댓글