1. 인스턴스 변수(instance variable)

- 클래스 영역의 멤버 변수 중 static이 붙지 않은 변수

- 인스턴스를 생성(객체 생성)할 때 생성되고, 참조변수가 없을 때 가비지컬렉터에 의해 자동제거

- 참조변수.인스턴스변수명 으로 생성한다.

- 각 인스턴스의 개별적인 저장공간이므로 다른 값 저장 가능


2. 클래스 변수(class variable)

- 클래스 영역의 멤버 변수 중 static이 붙은 변수

- 클래스가 로딩될 때 생성되고 프로그램이 종료될 때 소멸

- 같은 클래스의 모든 인스턴스들이 공유하는 변수

- 인스턴스 생성(객체 생성)없이 '클래스이름.클래스변수명' 으로 접근


3. 지역 변수(local variable)

- 클래스 영역 이외의 영역(메서드, 생성자, 초기화 블럭내부)

- 메서드 내에서 변수 선언문이 수행되었을 때 생성되고 메서드의 종료와 함께 소멸  

- 조건문, 반복문의 블럭{} 내에 선언된 지역변수는 블럭을 벗어나면 소멸


class Iphone {
	private String color, mobileServiceProvider; // 아이폰 색상, 통신사
	static double width = 58.6, height = 123.8, length = 7.6; // 가로, 높이, 세로
	
	Iphone() {} // 매개변수가 없는 생성자
	
	Iphone(String color, String mobileServiceProvider) {
		this.color = color;
		this.mobileServiceProvider = mobileServiceProvider;
	} // 매개변수를 갖는 생성자

	public String getColor() {
		return color;
	} // getter

	public void setColor(String color) {
		this.color = color;
	} // setter

	public String getMobileServiceProvider() {
		return mobileServiceProvider;
	} // getter

	public void setMobileServiceProvider(String mobileServiceProvider) {
		this.mobileServiceProvider = mobileServiceProvider;
	} // setter

	@Override
	public String toString() {
		return "Iphone [색상 = " + color + ", 통신사 = " + mobileServiceProvider + "]";
	} // String 출력
	
} // Iphone

public class IphoneTest {

	public static void main(String[] args) {
		Iphone iphone1 = new Iphone("검은색", "SKT"); // 생성자로 초기값 입력하여 객체 생성
		Iphone iphone2 = new Iphone(); // 초기값 없이 객체 생성해서 세터로 값 입력
		
		iphone2.setColor("흰색"); // 인스턴스 변수의 값을 변경
		iphone2.setMobileServiceProvider("KT"); // 인스턴스 변수의 값을 변경
		
		// 클래스변수(static변수)는  객체생성 없이 클래스이름.클래스변수로 직접 사용 가능
		System.out.println(iphone1.toString()+" 가로 = "+Iphone.width+" 높이 = "+Iphone.height+" 세로 = "+Iphone.length);
		System.out.println(iphone2.toString()+" 가로 = "+Iphone.width+" 높이 = "+Iphone.height+" 세로 = "+Iphone.length);

	} // main
} // IphonTest


+ Recent posts