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
}
}
반응형