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변수
스택 영역 : 지역변수, 매개변수
힙 영역 : 인스턴스
인스턴스 간에 데이터 공유가 필요한 상황.
소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다.