본문 바로가기
JAVA

6. 선언위치(클래스영역, 메소드영역)에 따른 변수의 종류

by seongju.lee 2022. 9. 17.

 

 

클래스 내부에서 변수를 선언하는 위치와 방법에 따라서 변수의 종류가 변경된다.

 

아래 코드를 기반으로 설명해보면,

class Variables
{
    //// 클래스 영역 Start ////
    
	int instanceVariable; // 인스턴스 변수
    	static int classVariable; // 클래스변수(static변수, 공유변수)

	///// 메서드 영역 Start ////
	void method() {
    	    int localVariable = 0; //지역변수
    	}
	///// 메서드 영역 End ////
    
    
    //// 클래스 영역 End ////
}

 

우선 1. 클래스 영역  2. 메서드 영역 두가지로 분리될 수 있다.

 

1. 클래스 영역

  • 클래스 시작부터 끝까지이다.
  • 해당 영역에서는 선언문만 가능하다.
  • 클래스 영역에 선언되는 변수에는 인스턴스 변수와 static변수가 있다.
    • 인스턴스 변수: 인스턴스가 생성되었을 때 생성된다.
      • 보통 개별적인 속성을 가질때 사용.
    • 클래스 변수(static변수) : 인스턴스 변수 선언방식 앞에 static을 붙여서 선언할 수 있다.
                                              클래스가 메모리에 올라갔을 때 생성된다. (객체 생성이 필요없다.)
                                              (cpu가 메모리에서 데이터를 쓸 때. -> 클래스가 메모리에 올라갈때 생성되기에 객체 생성 필요x)
      • 보통 공통적인 속성을 가질 때 사용.
    • static 변수의공유 개념 덕분에 생성시기가 틀린 이유가 있으며, 이 공유개념 덕분에 static변수를 많이 사용하기도 한다.
    • 때문에, 인스턴스 변수는 객체가 생성이 되어야 생성되는 반면 static변수는 클래스가 RAM에 올라갔을 때 생성되기 때문에 객체 생성이 필요없다.

 

2. 메서드 영역

  • 메서드 시작부터 끝까지이다.
  • 메서드 영역 내부에서 선언되는 변수는 지역변수이다.
    • 지역변수: 변수 선언문이 수행되었을 때 생성된다.

'JAVA' 카테고리의 다른 글

8. 호출스택  (0) 2022.09.18
7. static 변수와 instance변수  (0) 2022.09.17
5. 클래스의 정의  (0) 2022.09.17
4. 객체배열  (0) 2022.09.17
3. 클래스 파일 관리는?  (0) 2022.09.04