본문 바로가기
자바

[JAVA] 자바 멤버변수, 지역변수

by 별보는 개발자 2022. 10. 18.
변수의 종류 선언위치 생성시기 메모리영역
클래스 변수 클래스 영역 클래스가 메모리에 올라갈 때 Method 영역
인스턴스 변수 클래스 영역 인스턴스가 생성될 때 Heap 영역
지역 변수 메서드 내부 (블럭 내부) 변수 선언문이 실행될 때 Heap 영역

 

자바에서 선언되는 위치에 따라서 변수는 멤버변수와 지역변수로 나눌 수가 있습니다.

 

멤버변수는 선언되는 위치가 클래스 영역이고

 

지역변수메서드나 생성자 내부에서 선언이 됩니다.

 

그리고 멤버변수는 다시 두 가지로 나누어지는데

 

클래스 변수와 인스턴스 변수입니다.

 

일반적으로 앞에 'static' 이라는 단어가 붙어있으면 클래스변수라 할 수 있고,

 

이 클래스 변수는 클래스 내 모든 영역에 영향을 끼치는 전역함수의 성질을 가집니다.

 

1. 클래스 변수

static 지시자를 붙이며, 클래스가 메모리에 로딩될 때 생성됩니다.

 

JVM 메모리 영역 중 method 영역에 로드됩니다.

 

모든 클래스의 객체가 공통된 변수를 공유하게됩니다.

 

이미 메모리에 올라가 있기 때문에 클래스의 객체를 생성하지 않고도 사용가능합니다.

 

예를 들면, 자바의 Math 클래스의 PI는 static으로 선언되어 있습니다.

 

이처럼 클래스 변수의 객체를 안 만들어도 사용가능하다는 특징으로 인해

 

유틸성 라이브러리들을 static으로 선언후

 

클래스의 객체를 생성하지 않고 사용하고 있습니다.

 

2. 인스턴스 변수

클래스의 객체를 생성할 때 만들어집니다.

 

JVM 메모리 영역중 Heap 영역에 로드됩니다.

 

클래스의 객체마다 독립적인 값을 가질 수 있습니다.

 

new 키워드를 통해 객체를 생성해서 사용을 합니다.

 

Calculator calculator = new Calculator();

calculator.radius = 20;

 

radius 값은 여러 독립적인 값이 올 수 있습니다.

 

3. 지역 변수

메서드, 블럭 내부에서 변수 선언문이 실행되었을 때 생성됩니다.

 

블럭이 종료되면 소멸됩니다.

 

JVM 메모리 영역중 Heap 영역에 로드됩니다.

 

class Calculator {
	static double PI = 3.14 // 1.클래스변수

    double radius = 0;        // 2.인스턴스변수
    
    public String getCircleArea(){
    	// 3.지역 변수
        double result = this.PI * this.radius * this.radius;

        return result;
    }
    
    // 생성자
    Calculator(int radius) {
        this.radius = radius;
    }
}

 

 

'자바' 카테고리의 다른 글

[JAVA] JDK, JRE, JVM, 컴파일  (0) 2022.10.18