자바에서 변수는 클래스 변수, 인스턴스 변수, 지역변수 모두 세 종류가 있다.
여기서 변수의 종류를 결정짓는 요소는 변수의 선언 위치
이다.
클래스 영역에 선언되며, 인스턴스(객체)를 생성할 때 만들어진다.
인스턴스 변수(iv)의 값을 읽어 오거나 저장하려면 먼저 인스턴스를 생성해야한다.
인스턴스 마다 고유한 상태를 유지해야하는 속성의 경우, 인스턴스 변수로 선언한다.
클래스 변수를 선언하는 방법은 간단하다. 인스턴스 변수(iv)앞에 static
을 붙이기만 하면 된다.
인스턴스마다 독립적인 저장공간을 갖는 인스턴스 변수와는 달리
클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다.
즉, 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 경우 클래스 변수로 선언한다.
메서드 내에 선언되어 매서드 내에서만 사용 가능하다.
메서드가 종료되면 소멸되어 사용할 수 없게 된다.
위 내용들을 이해하기 위한 간단한 코드이다.
class Variable {
int iv; // 인스턴스 변수(instance variable)
static int cv; // 클래스 변수(class variable)
void method(){
int lv = 4; // 지역변수(local variable)
}
}
class Card{
String kind; // 인스턴스 변수
int age;
static int width = 100; // 클래스 변수
static int height = 200;
}
public class VariableEx {
public static void main(String[] args) {
// 클래스 변수(static 변수)는 객체 생성 없이 클래스이름.클래스 변수로 직접 사용 가능하다.
System.out.println("Card.width = " + Card.width);
System.out.println("Card.height = " + Card.height);
// 객체 생성(인스턴스 변수를 사용할 수 있다.)
Card c1 = new Card();
c1.kind = "친절한 광진이";
c1.age = 26;
System.out.println("c1은 " + c1.kind + " " + "그리고 나이는 " + c1.age + "이다.");
}
}
출력결과.
이런 유용한 정보를 나눠주셔서 감사합니다.