본문 바로가기

자바의 정석 정리

자바의 정석 - 6.2 변수

6.2.1 변수의 종류

  1. 클래스 변수
    • 멤버변수 중 static이 붙은 변수
  2. 인스턴스 변수
    • 멤버변수 중 static이 붙지 않은 변수
  3. 지역변수
    • 메서드 내에 정의된 변수
      변수의 종료 선언위치 생성 시기
      클래스 변수 클래스 영역 클래스가 메모리에 올라갔을 때
      인스턴스 변수 클래스 영역 인스턴스가 생성되었을 때
      지역변수 메서드 생성자

6.2.2 인스턴스 변수(Instance variable)

  • 클래스의 인스턴스가 새로 생성될 때 마다 만들어진다.(new)
  • 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가지게 된다.
  • 인스턴스마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스 변수로 선언한다.

6.2.3 클래스 변수(class variable)

  • 변수 앞에 static을 붙여 선언
  • 참조변수 선언이나 객체의 생성과 같이 클래스의 정보가 필요할 때, 클래스가 메모리에 로딩되는 과정에서 최초 1회 클래스 변수가 만들어 진다.
  • 모든 인스턴스가 공통된 저장공간을 공유하므로, 모든 인스턴스들이 공통적인 값을 유지해야 하는 경우 선언한다.
  • 클래스가 메모리에 로딩될때 생성되고 프로그램 종료시 삭제 되므로 전역변수의 성격을 갖는다.
class Card{
    String kind; //무늬
    int number; //숫자

    static int width; //폭
    static int height; //높이

/*
각 카드마다 무늬와 숫자는 다르기 때문에 '인스턴스 변수'로 선언한다.
각 카드마다 폭과 높이는 같기 때문에 '클래스 변수'로 선언한다. 
*/
}

6.2.4 지역변수(local variable)

  • 메서드 내에서 선언되고, 메서드 내에서만 사용 가능하다.
  • 메서드 종료시 소멸