Search

변수

선언 위치에 따른 변수의 종류

// 클래스 영역 class Variables { int iv; // 인스턴스 변수 static int cv; // 클래스 변수(static 변수, 공유 변수) // 메소드 영역 void method() { int lv = 0; // 지역 변수 } }
Java
지역 변수(local variable) : 멤버변수를 제외한 나머지 변수들
생성시기 : 변수 선언문이 수행되었을 때
선언위치 : 클래스 영역 이외 영역(메소드, 생성자, 초기화 블럭 내부)
메소드 내 선언 : 메소드 내에서만 사용 가능, 메소드 종료 시 사용 불가
for, while 문의 블럭 내 선언 : 블럭 내에서만 사용 가능, 블럭을 탈출하면 사용 불가
클래스 변수 : 멤버변수 중 static이 붙은
생성시기 : 클래스가 메모리에 올라갈 때
선언위치 : 클래스 영역
모든 인스턴스가 공통된 저장공간(변수)를 공유 → 한 클래스 내 모든 인스턴스들이 공통값을 유지해야 할 경우 사용
인스턴스를 생성하지 않고 바로 클래스이름.클래스변수로 호출하여 사용 가능
인스턴스 변수 : 멤버변수 중 static이 붙지 않은
생성시기 : 인스턴스가 생성되었을 때
선언위치 : 클래스 영역
인스턴스 변수 값을 읽어 오거나 저장하기 위해선 반드시 인스턴스 생성이 먼저 필요
인스턴스는 독립적으로 저장 공간을 가질 수 있으므로 서로 다른 값을 가질 수 있음.
인스턴스마다 고유한 상태를 유지해야 하는 속성의 경우, 인스턴스 변수로 선언

클래스 변수와 인스턴스 변수

포커 카드 클래스
class Card { // 인스턴스 변수 String kind; // 무늬 int number; // 숫자 // 클래스 변수 static int width = 100; // 폭 static int height = 250; // 높이
Java
CardTest.java
인스턴수 변수
인스턴스가 생성될 때마다 새로 생성 → 인스턴스마다 각기 다른 값 가능
클래스 변수
모든 인스턴스가 하나의 저장 공간 공유 → 항상 공통된 값

참고 자료