Programming Language/Java

[Java] 자바 변수의 종류

영벨롭 2023. 7. 23. 17:43

★ 변수(variable)란?

 변수(variable)는 데이터를 저장하기 위해 할당받은 메모리(Memory) 공간을 의미합니다. 


★ 자바 변수의 종류

 자바 변수는 프로그램 코드 내에서 변수의 위치에 따라 그 유형을 구분할 수 있습니다. 

 

1. 멤버 변수 Member variable

 클래스부에 선언되며 객체가 생성될 때 객체의 특징과 속성을 저장하는 변수입니다.

 인스턴스 변수클래스 변수로 구분할 수 있습니다. 

 

2. 인스턴스 변수 Instance variable

 클래스의 객체를 생성할 때 만들어지며, JVM 메모리 영역 중 Heap 영역에 로드됩니다. 

 인스턴스를 통해서만 접근할 수 있으며, 인스턴스는 독립적인 저장공간을 가지므로 인스턴스마다 독립적인 값을 가질 수 있습니다. 

 

3. 클래스 변수 Class variable

 static 으로 선언된 멤버 변수로, 클래스가 메모리에 로드될 때 생성됩니다.

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

 인스턴스 생성없이 사용 가능하며, 클래스의 모든 객체가 단 하나의 공통된 클래스 변수를 공유하게 됩니다. 

 

4. 매개 변수 Parameter

 메서드에 인자로 전달되는 값을 받기 위한 변수로, 메서드 내에서 지역 변수처럼 사용됩니다. 

 

5. 지역 변수 Local variable

 메서드 또는 블럭 내에서 선언된 변수로, JVM 메모리 영역 중 Heap 영역에 로드됩니다.

 멤버 변수와 동일한 이름을 가질 수 있으며, 동일할 경우 지역 변수가 우선입니다. 

 

변수 선언 위치 생성 시기 메모리 위치
멤버 변수
(= 전역 변수)
인스턴스 변수 클래스부 인스턴스가 생성되었을 때 Heap 영역
클래스 변수 클래스가 메모리에 로드될 때 Method 영역
지역 변수 매개 변수 메서드의 인자 변수 선언문이 수행되었을 때 Heap 영역
지역 변수 블럭 내부
public class Variables {
    // [멤버 변수]
    // 인스턴스 변수 num1
    int num1;
    // 클래스 변수 num2
    static int num2;

    // 매개 변수 a, b
    public int add(int a, int b) {
        // 지역 변수 c
        int c = a + b;
        return c;
    }

    public static void main(String[] args) {
        // 인스턴스 생성
        Variables var1 = new Variables();
        Variables var2 = new Variables();

        // 인스턴스 변수 사용
        var1.num1 = 10;
        var2.num1 = 20;

        // 클래스 변수 사용
        Variables.num2 = 100;

        // 매개 변수 전달
        var1.add(1, 2);
        var2.add(3, 4);

        System.out.println(var1.num1 + " " + var1.num2); // 10 100
        System.out.println(var2.num1 + " " + var2.num2); // 20 100

    }
}
반응형