본문 바로가기

Programming/Java

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

반응형
public class test { 

	int a; // 인스턴스 변수 
    static int b; // 클래스 변수 
    
    void method() { 
    	int c; // 지역 변수 
        } 
        
  }
변수의 종류 선언위치 생성시기(메모리 할당시기)
클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때
인스턴스 변수 인스턴스가 생성될 때
지역 변수 클래스 이외의 영역(메서드, 생성자, 초기화 블럭) 변수 선언문이 수행되었을 때

인스턴스 변수

인스턴스 변수는 인스턴스마다 다른 값을 가져야 할 때, 인스턴스 변수로 선언한다.

 

클래스 변수

클래스 변수는 인스턴스 변수에 static만 앞에 붙혀주면 되는데, 모든 인스턴스가 공통된 값을 공유하게 되는 개념이다. 클래스가 로딩될 때 생성되기 때문에 메모리에는 한 번만 올라간다. 그래서 static이 붙은 public static 변수는 프로그램 내 어디에서든 접근할 수 있는 전역 변수화 한다.

 

이미 메모리에 올라간 상태기 때문에 따로 객체 생성을 한다면 중복으로 메모리를 사용하는 것이다. 클래스명으로 접근가능하다.

 

 

지역 변수

메서드 내에서 선언되는 변수로, 메서드가 실행될 때만 메모리를 할당받고 메서드가 끝나면 소멸되어 사용할 수 없게 된다.

반응형