개발/Java

클래스 변수, 인스턴스 변수, 지역 변수

Debin 2022. 2. 24.
반응형

변수는 클래스 변수, 인스턴스 변수, 지역변수 모두 세 종류가 있다.

변수의 종류를 결정짓는 중요한 요소는 '변수의 선언된 위치'이므로,

변수의 종류를 파악하기 위해서는 변수가 어느 영역에 선언되었는지를 확인하는 것이 중요하다.

멤버 변수를 제외한 나머지 변수들은 모두 지역 변수다.

멤버 변수 중 static이 붙은 것은 클래스 변수, 붙지 않은 것은 인스턴스 변수다.

 

변수 예시

class Variables{
	int iv; //인스턴스 변수
    static int cv; //클래스 변수, static 변수
    
    void method(){
    
    	int lv=0; //지역 변수
    }
}

인스턴스 변수

  • 클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어진다.
  • 인스턴스 변수의 값을 읽어 오거나 저장하기 위해서는 먼저 인스턴스를 생성해야 한다.
  • 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
  • 인스턴스마다 고유한 상태를 유지해야 하는 속성의 경우, 인스턴스 변수로 선언한다.

클래스 변수

  • 클래스 변수를 선언하는 방법은 인스턴스 변수 앞에 static을 붙이기만 하면 된다.
  • 인스턴스마다 독립적인 공간을 갖는 인스턴스 변수와는 달리, 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유한다.
  • 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야 하는 속성의 경우, 클래스 변수로 선언해야 한다.
  • 클래스 변수는 인스턴스 변수와 달리 인스턴스를 생성하지 않고도 언제라도 바로 사용 가능하다.
  • 클래스가 메모리에 로딩될 때 생성되어 프로그램이 종료될 때까지 유지되며, public을 앞에 붙이면 같은 프로그램 내에서 어디서나 접근할 수 있는 전역 변수의 성격을 갖는다.

변수의 초기화

멤버변수는 초기화를 하지 않아도 자동적으로 변수의 자료형에 맞는 기본값으로 초기화가 이루어지므로 초기화하지 않고 사용해도 되지만, 지역변수는 사용하기 전에 반드시 초기화해야 한다.

 

 

반응형

댓글