Backend/Java

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

chillmyh 2023. 11. 29. 23:24
int instNum;
static int classNum;

void method() {
    int localNum;
}

 


클래스 변수 : 

static int classNum;
  • 클래스 영역의 변수(필드)
  • 인스턴스 변수에 static을 앞에 붙여주면 되며, 모든 인스턴스가 공통된 값을 공유하게 됨. 
  • 앞에 public을 붙이면 같은 프로그램 내에서 어디서든 접근할 수 있는 전역 변수가 됨.
  • 인스턴스를 생성하지 않고 클래스이름.클래스변수명 을 통해 접근 가능!
  • static 영역에 저장되며, 프로그램 종료시 까지 소멸되지 않아 모든 객체가 사용 가능하다.

인스턴스 변수 :

int instNum;
  • 클래스 영역의 변수(필드)
  • 각각의 인스턴스마다 고유의 값을 가져야 할때는 인스턴스 변수로 선언한다.
  • heap 영역에 저장되며, 인스턴스가 생성될 때 생성된다.(= 인스턴스를 생성해야 읽거나 변경이 가능하다!)

지역 변수 :

void method() {
    int localNum;
}
  • 클래스 이외의 영역(메서드, 생성자, 초기화 블럭)에 위치!!
  • 메서드 내에서 선언! 메서드 내에서만 사용가능!
  • Stack 영역에 저장. 메서드 종료시에 소멸된다!