Backend Developer

목표를 위해 시스템을, 시스템을 위해 회고를

변수의 종류


자바 변수에 대해 알아보자.

public class Variables {

  static int classVariables;  // 클래스 변수
  int instanceVariables;      // 인스턴스 변수

  <!-- 생성자 -->
  public Variables(int parameter1) {      // 파라메타 변수
    this.instanceVariables = parameter1;
  }

  <!-- 메소드 -->
  public void method(int parameters) {    // 파라메타 변수
    int localVariables;   // 지역 변수
  }

}


  클래스변수 인스턴스변수 매개변수 지역변수
설명 클래스 내부 메소드 외부 선언된 변수
static 키워드 있음
클래스 안에 메소드 밖에 선언된 변수
static 키워드 없음
메소드나 생성자에 넘겨주는 변수 메소드 내에 선언된 변수
Lifecycle 클래스가 생성될 때 생명 시작
프로그램이 끝날 때 소멸
객체가 생성될 때 생명 시작
그 객체를 참조하는 다른 객체가 없을 때 소멸
메소드가 호출될 때 생명 시작
메소드 끝나면 소멸
메소드가 호출될 때 생명 시작
메소드 끝나면 소멸
  • 클래스 변수

    • 클래스 변수는 인스턴스 변수에 static만 붙여주면 됩니다.
    • 인스턴스 변수는 각각 고유한 값을 가지지만, 클래스 변수는 모든 인스턴스가 공통된 값을 공유하게 됩니다.
      그래서 한 클래스의 모든 인스턴스들이 공통적인 값을 가져야할 때 클래스 변수로 선언합니다.
    • 클래스가 로딩될 때 생성되어(메모리에 딱 한번만 올라갑니다.) 종료될 때까지 유지되는 클래스 변수는 public을 붙이면 같은 프로그램 내에서 어디서든 접근할 수 있는 전역변수가 됩니다.
    • 또한 인스턴스 변수의 접근법과 다르게 인스턴스를 생성하지 않고 [클래스 이름.클래스 변수명]을 통해 접근할 수 있습니다.
  • 인스턴스 변수

    • 인스턴스 변수는 인스턴스가 생성될 때 생성됩니다.
    • 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야합니다.
    • 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야할 때는 인스턴스 변수로 선언합니다.
  • 지역 변수

    • 메소드 내에서 선언되며 매소드 내에서만 사용할 수 있는 변수입니다.
    • 메소드가 실행될 때 메모리를 할당 받으며, 메소드가 끝나면 소멸되어 사용할 수 없게 됩니다.