자바 변수에 대해 알아보자.
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을 붙이면 같은 프로그램 내에서 어디서든 접근할 수 있는 전역변수가 됩니다.
- 또한 인스턴스 변수의 접근법과 다르게 인스턴스를 생성하지 않고 [클래스 이름.클래스 변수명]을 통해 접근할 수 있습니다.
-
인스턴스 변수
- 인스턴스 변수는 인스턴스가 생성될 때 생성됩니다.
- 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야합니다.
- 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야할 때는 인스턴스 변수로 선언합니다.
-
지역 변수
- 메소드 내에서 선언되며 매소드 내에서만 사용할 수 있는 변수입니다.
- 메소드가 실행될 때 메모리를 할당 받으며, 메소드가 끝나면 소멸되어 사용할 수 없게 됩니다.