static

devlsn96·2024년 7월 31일
0

java 언어 개념정리

목록 보기
13/27
  • 하나의 게시물을 표현하기 위한 클래스
  • 멤버변수는 모든 객체가 독립적으로 갖는 고유의 데이터이기 때문에
    게시물의 수라는 공유데이터를 모든 게시물이 갖게된다.
  • 즉 각각의 객체가 중복된 데이터를 갖게된다.

1-1. static이 적용된 변수의 사용

  • static이 붙은 멤버변수는 객체의 개수에 상관 없이
    단 하나만 생성되며, 이를 모든 객체가 공유하기 때문에
    메모리를 효율적으로 사용할 수 있다.

1-2. 컴퓨터의 메모리 구조

  • 고정영역

    • 코드영역
      : 프로그램의 코드가 저장되는 영역
      이 영역에 저장된 명령어들을 CPU가 하나씩 가져가 저장
    • 데이터영역
      : 전역변수와 static 으로 선언되는 변수가 할당된다.
      이 영역에 할당되는 변수들은 프로그램 시작과 동시에 메모리 공간이 할당되어 종료될 때까지 남아있게 된다.
  • 동적영역

    • 힙 영역
      : 프로그래머가 원하는 시점에 변수를 할당하고 소멸시키는 영역
      메모리 동적 할당시 사용된다.
      객체가 생성되는 영역이다.
    • 스택 영역
      : 함수가 실행될 때 사용되는 파라미터와 지역변수에 대한 메모리공간. 함수의 종료와 함께 소멸된다.

1-3. 하나의 프로그램이 사용하는 메모리 영역

  • 고정영역
    • 프로그램이 실행되면 실행파일이 메모리에 로드되면서, 실행파일의 용량만큼 RAM을 사용한다
    • 실행 파일의 크기는 변할 수 없으므로 이 영역의 크기는 고정크기를 갖는다.
  • 동적영역
    • 프로그래머가 new키워드를 사용해 객체나 배열을 생성하면 사용된다.
    • 또 다른 경우는 메서드가 호출되는 동안 사용될 파라미터 지역변수 생성된다.
    • 메서드가 종료되거나 객체가 더이상 사용되지 않으면 생성된 변수나 객체는 메모리에서 사라지므로 이 영역은 유동적인 크기를 갖게 된다.

1-4. static 데이터의 생성 위치

  • 메모리의 고정영역에 쓰인다.

1-5. 프로그램이 메모리에 사용하는 순서

  • 최초 실행시 고정영역에 실행파일 만큼의 메모리를 점유한다.
  • 프로그램이 각종 동작을 수행하는 동안 동적영역을 사용한다.

1-6. 멤버변수와 static 멤버변수의 차이

  • static 변수는 프로그램의 실행과 동시에 객체의 생성 여부와 상관없이 이미 존재하기 때문에 소스 코드에서는 특정 클래스 안에 명시하지만, 그 클래스를 통해서 생성되는 객체나 그 안에 포함되는 멤버변수와는 다른 존재이다.

  • 객체가 생성되지 않더라도 이미 존재하고 있기 때문에
    static 변수는 객체의 이름을 통해 접근하는 것이 아니라 클래스의 이름을 통해 접근해야한다.

  • 단, static 변수가 선언된 클래스안에서는 변수 이름으로 직접 접근이 허용된다.

    	클래스이름.static변수이름
  • Article 클래스 및 다른 클래스에서 접근하는 경우

    	Article.count = 3;
    	Article.category = "공지사항";
  • Article 클래스에서 접근하는 경우

    	count = 5;
    	category = "공지사항";

1-7. static데이터에 접근하기 위한 메서드

  • 클래스에서 정의하는 일반 메서드들은 객체의 생성과 동시에 동적 메모리영역에서 활성화된다.
  • 동적 메모리 입장에서 고정 메모리 영역의 자원들은 항상 존재한다.
  • 고정 메모리 영역의 자원들이 동적 메모리의 자원들이 항상 존재하는 것이라는 보장을 받지 못한다.
profile
Quantum Jump to class for java….

0개의 댓글