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
'Java > Java SE' 카테고리의 다른 글
Java 클래스 메서드(static메서드), 인스턴스메서드 (0) | 2013.08.01 |
---|---|
Java 메서드(method), return(반환), 기본형 매개변수 & 참조형 매개변수 (0) | 2013.08.01 |
Java this(), this (0) | 2013.07.31 |
클래스(Class), 객체(Object), 인스턴스(Instance), 생성자(Constructor) (2) | 2013.07.30 |
객체지향 프로그래밍 (Object-oriented Programming) (0) | 2013.07.29 |