Java의 정석

객체 지향 개념 - 4 선언 위치에 따른 변수의 종류

donghyeob.k 2022. 3. 3. 09:42

선언 위치에 따른 변수의 종류

변수의 선언위치가 변수의 종류와 범위를 결정한다.

class Variables
{
	// 클래스 영역
	int iv; // 인스턴스 변수
    statc int cv; // 클래스 변수
    
    // 메서드 영역
    void method () {
    	int iv = 0; // 지역변수
    }
}
  • 클래스변수 - 클래스 영역에 선언하며 클래스가 메모리에 올라갈 때 생성됨, 같은 클래스의 모든 인스턴스들이 공유하는 변수로 인스턴스 생성없이 "클래스이름.클래스변수명"으로 접근
  • 인스턴스변수 - 클래스 영역에 선언하며 인스턴스 생성 시 생성됨, 각 인스턴스의 개별적인 저장공간으로 인스턴스마다 다른 값 저장가능하며 생성 후, "참조변수.인스턴스변수명"으로 접근, 참조변수가 없을 때 가비지컬렉터에 의해 자동제거됨
  • 지역변수 - 메서드 영역에 선언하며 변수 선언문 수행 시 생성됨, 조건문, 반복문의 블럭 내에 선언된 지역변수는 블럭을 벗어나면 소멸

 

클래스변수와 인스턴스변수

인스턴스변수는 인스턴스가 생성될 때마다 생성되므로 인스턴스마다 각기 다른 값을 유지할 수 있지만, 클래스변수는 모든 인스턴스가 하나의 저장공간을 공유하므로 항상 공통된 값을 갖는다.

class Card {
    // 인스턴스변수
    String kind; // 무늬
    int number; // 숫자
    
    // 클래스변수
    static int width = 100; // 너비
    static int height = 250; // 높이
}