[Java] 변수의 종류 : 클래스변수, 인스턴스 변수, 지역변수

정재현·2024년 1월 3일

Java

목록 보기
5/43
post-thumbnail

변수의 종류

클래스 변수 : static

  • static 지시자를 붙임
  • 클래스가 메모리에 로딩될 때 생성
  • JVM 메모리 영역 중 method 영역에 로드
  • 모든 클래스의 객체가 공통된 변수를 공유
  • 이미 메모리에 올라가 있기 때문에 클래스의 객체를 생성하지 않고도 사용 가능

인스턴스 변수

  • 클래스의 객체를 생성할 때 생성
  • JVM 메모리 영역중 Heap 영역에 로드
  • 클래스의 객체마다 독립적인 값을 가짐

지역 변수

  • 블럭 내부에서 변수 선언문이 실행되었을 때 생성
  • 블럭이 종료되면 소멸
  • JVM 메모리 영역중 Heap 영역에 로드
class Calculator {
    // 1. 클래스 변수 - 원주율
    static double PI = 3.14;
    // 2. 인스턴스 변수 - 반지름
    double radius = 0;

    public double getAreaOfCircle() {
        // 3. 지역 변수
        double result = this.PI * this.radius * this.radius;

        return result;
    }

    // 생성자 - 반지름을 넣어줍니다.
    Calculator(int radius) {
        this.radius = radius;
    }
}

주의사항

  • 모든 변수를 Static으로 선언할 경우, Garbage Collector가 주기적으로 런타임시 Heap 영역에 동적으로 할당된 객체들을 해제하는데 Static으로 선언하게 되면 Method 영역에만 정보가 있어서 이미 점유하고 있는 메모리를 줄일수가 없다.
  • 따라서 정말 필요한 데이터만 static을 붙여서 클래스 변수로 선언하자.
profile
공부 기록 보관소

0개의 댓글