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

@t189216·2023년 12월 6일
0

Java

목록 보기
12/19

변수의 종류


변수는 클래스 변수, 인스턴스 변수, 지역변수 모두 세 종류가 있다. 변수의 선언 위치에 따라 변수의 종류가 결정된다.

멤버변수를 제외한 나머지 변수들은 모두 지역변수 이며, 멤버변수 중 static이 붙은 것은 클래스 변수, 붙지 않은 것은 인스턴스 변수이다.

class Variables {
	int iv;         // 인스턴스 변수
    static int cv;  // 클래스 변수(static 변수, 공유변수)
    
    void method()
    {
    	int lv = 0; // 지역변수
    }
}
변수의 종류선언위치생성시기
클래스 변수클래스 영역클래스가 메모리에 올라갈 때
인스턴스 변수클래스 영역인스턴스가 생성되었을 때
지역변수클래스 영역 이외의 영역변수 선언문이 수행되었을 때

멤버 변수

클래스 영역에 생성된 변수를 멤버변수 라고 합니다. 멤버 변수 중 static이 붙은 것은 클래스변수, static이 붙지 않은 것은 인스턴스 변수입니다. 멤버변수 는 인스턴스 변수와 클래스 변수를 모두 통칭하는 말입니다.

↗️ 객체의 속성, 멤버변수

클래스 변수 (static 변수)

멤버 변수 중 static 키워드를 가지고 필드에 선언하는 변수입니다. 모든 인스턴스가 공통된 저장공간(변수)을 공유하므로, 항상 공통된 값을 갖습니다.

인스턴스 변수와 달리 인스턴스를 생성하지 않고 언제라도 바로 사용할 수 있습니다.

  • '클래스이름.클래스변수'와 같은 형식으로 사용
  • 프로그램 시작 시 생성, 프로그램 종료 시 소멸
  • private가 아니라면 클래스 이름으로 다른 클래스에서도 사용 가능합니다.
  • 사용하는 메모리는 데이터영역 메모리입니다.
  • 정적 필드 (메모리의 static 영역 사용)

인스턴스 변수

멤버 변수 중 static 키워드 없이 클래스 영역에 선언된 변수입니다. 인스턴스를 생성할 때 만들어지며, 인스턴스마다 별도의 저장공간을 가지므로 서로 다른 값을 가질 수 있습니다.

  • 메모리의 heap 영역 사용
  • 참조하지 않을 시 소멸(가바지 컬렉터가 메모리를 수거할때 소멸시킴)
클래스 변수인스턴스 변수
공통 속성개별 속성

지역 변수

메서드 내에 선언되며 메서드 내에서만 사용 가능합니다. 메서드가 종료되면 사용할 수 없습니다.

  • 메서드, 생성자, 초기화 블록 내부에 선언하는 변수
  • 사용하는 메모리는 스택 메모리

매개 변수

생성자 또는 메서드가 작업을 수행하는데 필요한 값들(입력)을 제공받기 위한 변수입니다.

참조 변수

클래스의 객체를 참조하기 위한 변수입니다. 정확히는 객체의 멤버변수 또는 멤버 메서드를 사용하기 위해 사용하는 변수입니다.

속성(property)기능(function)
멤버변수(variable)메서드(method)

↗️ 객체의 속성, 멤버변수

profile
Today I Learned

0개의 댓글

관련 채용 정보