멤버 변수와 지역 변수

Xtraa·2024년 12월 17일

Java 기본 개념

목록 보기
2/7

1. 멤버 변수 (Member Variable)

정의

  • 클래스 내에서 선언된 변수로, 객체의 속성을 나타냄.
  • *필드(Field)**라고도 불리며, 객체가 생성될 때 함께 생성된다.

특징

  1. 선언 위치:
    • 클래스 내부, 메서드나 생성자 외부에서 선언됨.
  2. 메모리 영역:
    • 힙(Heap) 메모리에 저장됨 (인스턴스 변수의 경우).
  3. 초기화:
    • 별도로 초기화하지 않아도 기본값으로 자동 초기화됨.
      • 숫자형: 0, 0.0
      • 논리형: false
      • 참조형: null
  4. 수명:
    • 객체가 생성될 때 할당되고, 객체가 소멸될 때까지 존재.
  5. 종류:
    • 인스턴스 변수: 객체마다 독립적으로 존재.
    • 클래스 변수: static 키워드가 붙어 클래스에 고정된 변수.

예제

public class Example {
    // 멤버 변수 (필드)
    int instanceVar;         // 인스턴스 변수
    static int staticVar;    // 클래스 변수 (static 변수)

    public void display() {
        System.out.println("Instance Variable: " + instanceVar);
        System.out.println("Static Variable: " + staticVar);
    }
}

2. 지역 변수 (Local Variable)

정의

  • 메서드, 생성자, 블록 내부에서 선언된 변수로, 해당 영역 내에서만 사용 가능.

특징

  1. 선언 위치:
    • 메서드, 생성자, 블록 안에서 선언됨.
  2. 메모리 영역:
    • 스택(Stack) 메모리에 저장됨.
  3. 초기화:
    • 반드시 초기화 후 사용해야 함.
      • 자동으로 초기화되지 않음.
  4. 수명:
    • 해당 블록 실행 시 생성되고, 블록이 종료되면 소멸됨.
  5. 접근 제한:
    • 블록(스코프) 외부에서 접근 불가.

예제

public class Example {
    public void display() {
        // 지역 변수
        int localVar = 10;  // 초기화 필요
        System.out.println("Local Variable: " + localVar);
    }
}

3. 멤버 변수와 지역 변수 비교

구분멤버 변수지역 변수
선언 위치클래스 내부, 메서드 외부메서드, 생성자, 블록 내부
메모리 영역힙(Heap) 메모리스택(Stack) 메모리
초기화 여부자동으로 기본값으로 초기화반드시 명시적으로 초기화 필요
수명객체가 소멸될 때까지 존재선언된 블록이 종료되면 소멸
접근 범위클래스 전체에서 접근 가능선언된 블록 내부에서만 접근 가능
종류인스턴스 변수, 클래스 변수블록 내 로컬 변수

4. 예제 코드 비교

public class VariableExample {
    // 멤버 변수
    int instanceVar = 10;         // 자동으로 0으로 초기화됨
    static int staticVar = 20;    // 클래스 변수

    public void method() {
        // 지역 변수
        int localVar = 30;        // 반드시 초기화 필요
        System.out.println("InstanceVar: " + instanceVar);
        System.out.println("StaticVar: " + staticVar);
        System.out.println("LocalVar: " + localVar);
    }

    public static void main(String[] args) {
        VariableExample obj = new VariableExample();
        obj.method();
    }
}

실행 결과

InstanceVar: 10
StaticVar: 20
LocalVar: 30

요약

  1. 멤버 변수:
    • 클래스 내부에서 선언되며 객체의 속성.
    • 자동으로 기본값으로 초기화되며, 객체의 생명주기 동안 유지.
  2. 지역 변수:
    • 메서드나 블록 내부에서 선언되며, 해당 영역 내에서만 사용 가능.
    • 반드시 초기화 후 사용해야 하고, 블록이 종료되면 소멸.
profile
https://xtraa.notion.site/Xtraa-ed48ac432d354d01b5bf5b0da5ec94a9?pvs=4

0개의 댓글