여러 인스턴스에서 공통으로 사용하는 변수를 선언하자 - static 변수

kangsun lee·2023년 3월 20일
0

Java

목록 보기
42/44

공통으로 사용하는 변수가 필요한 경우


  • 여러 인스턴스가 공유하는 기준 값이 필요한 경우
  • 학생마다 새로운 학번 생성
  • 카드회사에서 카드를 새로 발급할때마다 새로운 카드 번호를 부여
  • 회사에 사원이 입사할때 마다 새로운 사번이 필요한 경우

동일한 클래스들이 공유할 변수가 필요한 경우가 있다. 일반 멤버 변수는 인스턴스를 생성할 때마다 생성이 되기때문에 공통으로 사용되는 변수는 따로 static 변수를 사용해준다.

  • 순차적인 값이 필요하거나 (중복X)
  • 각 인스턴스마다 부여해줄 기준이 되는 값
  • 기준 값이 있고 그 기준값을 바탕으로 만들어지는 값



static 변수 선언과 사용하기


static int serialNum;

  • 인스턴스가 생성될 때 만들어지는 변수가 아닌, 처음 프로그램이 메모리에 로딩될 때 메모리를 할당
  • 클래스 변수, 정적변수라고도 함 (vs. 인스턴스 변수)
  • 인스턴스 생성과 상관없이 사용 가능하므로 클래스 이름으로 직접 참조

Student.seriaNum = 100;


프로그램이 메모리에 올라가면 프로세스 상태가 되는데(실질적으로 스레드의 상태로 되어 돌아가게 되는데), 메모리에 올라가게 되는 순간 메모리는 코드영역과 데이터(상수,static)영역으로 나누어지는데 코드영역엔 instructionSet 명령어가 들어가고 데이터영역엔 상수나 리터럴같은 애들이 먼저 잡히고 static 변수도 여기에 올라간다.
힙메모리는 인스턴스가 생성되었다가 인스턴스가 사라지는 순간 가비지콜렉터에 의해 수거가 된다. (동적메모리)
그와 반대로 static 변수는 힙메모리가 아닌 데이터 메모리에 들어간다. 소멸되는 순간은 프로그램이 다 끝나고 메모리에서 언로드 될 때 없어진다.




  • static 변수는 인스턴스에서 공통으로 사용하는 영역임을 알 수 있다.
  • 데이터영역 : 처음 메모리에 로드될때부터 자리를 잡고 공유해서 쓰다가 메모리가 언로드될 때 사라지는 메모리
  • 스택메모리 : function 함수가 호출될 때마다 function 안에서 사용하는 지역변수가 들어가는 메모리
  • 힙 메모리 : 필요할 때만 사용하는 메모리.




    ~~ 여기까진 개념 학습 ~~



우리가 실질적으로 프로그래밍을 할 때 활용하는 방법


회사원이 입사할 때마다 새로운 사번 부여하기


  • static 변수는 인스턴스를 참조하지않고 class 이름으로 참조한다.
profile
코딩 공부 💻

0개의 댓글