Java 인스턴스 변수 vs 클래스 변수 vs 지역변수
by 볼빵빵오춘기변수의 종류를 결정짓는 중요한 요소는 ‘변수의 선언위치’
- 따라서 변수가 어느 영역에 선언되었는지를 확인하는 것이 중요하다.
- 클래스 변수와 인스턴스변수를 합쳐서 멤버변수라고 부른다.
- 클래스 영역에는 선언문만 가능하다.
public class Var{
int iv; // 인스턴스 변수
static int cv; // 클래스 변수
void method(){
int lv; // 지역 변수
}
}
변수의 종류 | 선언 위치 | 생성시기 |
클래스 변수 (Class Variable) |
클래스 영역 | 클래스가 메모리에 올라갈 때 |
인스턴스 변수 (Instance Variable) |
클래스 영역 | 인스턴스가 생성되었을 때 |
지역 변수 (local Variable) |
클래스 영역 이외의 영역 (메소드, 생성자, 초기화블럭 내부) |
변수 선언문이 수행되었을 때 |
인스턴스 변수
- 인스턴스 변수의 값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야 한다.
- 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야 할 때는 인스턴스 변수로 선언한다.
클래스 변수
- 인스턴스 변수에 static만 붙여 주면 된다.
- 모든 인스턴스가 공통된 값을 공유한다.
- 한 클래스의 모든 인스턴스들이 공통적인 값을 가져야할 때 클래스 변수로 선언한다.
- 클래스가 로딩될 때 생성되어 종료될 때 까지 유지되는 클래스 변수는 public을 붙이면 같은 프로그램 내에서 어디서든 접근 할 수 있는 전역변수가 된다.
- 인스턴스를 생성하지 않고 ‘클래스이름.클래스명’을 통해 접근 가능하다.
지역 변수
- 메서드 내에서 선언되며 메서드 내에서만 사용할 수 있는 변수이다.
- 메서드가 실행될 때 메모리를 할당받으며 메서드가 끝나면 소멸된다.
추가로 클래스변수와 인스턴스변수를 얘기하자면...
클래스변수는 인스턴스변수에 static만 붙여주면 된다 했다.
그렇게 나누는 상황을 코드가 아닌 글로 설명하자면
카드 클래스를 만든다 가정하였을 때 속성으로 무늬, 숫자, 폭, 높이가 있을 수 있다.
여기서 무늬와 숫자는 카드별 다른 값을 가져야 하므로 인스턴스변수 여야하고
폭과 높이는 모든 카드가 같은 값이 어야 하므로 클래스변수 여야한다.
2023.11.28 - [About Programming/Java] - Java 인스턴스 메서드 vs 클래스 메서드, static을 언제 붙이나?
'👩🏻💻 About 프로그래밍 > Java' 카테고리의 다른 글
Java return문, 반환값 (0) | 2023.11.28 |
---|---|
Java 메서드, 메서드 장점 · 작성 · 구성 · 구현부 (0) | 2023.11.28 |
Java 객체 배열, 선언위치에 따른 변수의 종류 (0) | 2023.11.28 |
Java 객체 vs 클래스 vs 인스턴스 (0) | 2023.11.28 |
Java 객체지향 언어, 특징, 자바의 특징 (0) | 2023.11.28 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기