[Java] 인스턴스 변수의 개념과 예제
인스턴스 변수
- new 명령을 통해 생성하는 변수이다.
- 인스턴스는 값을 개별적으로 구분해서 관리할 필요가 있을 때 사용한다.
- 클래스가 로딩될 때 생성되지 않는다.
- 인스턴스 주소를 통해 접근 가능하다.
- 인스턴스 주소를 잃어버리면 해당 변수는 사용할 수 없게 된다.
- 변수 선언에 static을 붙이지 않는다.
인스턴스 변수는 기본 값으로 0을 갖는다.
1) class Student 코드
static class Student {
// 인스턴스 변수는 기본 값으로 0을 갖는다.
// 주소 변수 : null
// 정수 변수(byte, short, int, long, char) : 0
// 부동소수점 변수(float, double) : 0.0
// 논리 변수(boolean) : false
// => 사실 null이나 false, 0.0 모두 메모리가 0으로 셋팅된다는 것을 의미한다.
String name;
int age;
boolean working;
}
* 주의!
많은 사람들이 오해하는 게 있다. 위 클래스에서 선언된 String name의 'name'은
인스턴스 변수가 아니다. 그 어떤 변수도 아니다. name 이라는 이름을 가진 String
타입의 메모리를 만들라는 '명령어'일 뿐이다. 인스턴스 변수는 인스턴스가 생성된
후, '메모리에 실제로 저장되는 변수' 값이다.
2) 인스턴스 호출 및 출력 코드
public static void main(String[] args) {
// 인스턴스 변수 사용법:
// 인스턴스의주소.변수명
Student s1 = new Student(); // new Student() -> 인스턴스 생성!
Student s2 = new Student();
System.out.println(s1.name);
// 항상 로컬 변수는 값을 설정한 다음에 사용해야 한다.
System.out.println(s1.age);
System.out.println(s1.working);
System.out.println("-------------------------");
s1.name = "홍길동";
s1.age = 20;
s1.working = true;
System.out.println(s1.name);
System.out.println(s1.age);
System.out.println(s1.working);
* s2 값은 s1 값과 전혀 관계가 없다.
'Programming > java' 카테고리의 다른 글
[Java] 스태틱 블록 (static block), 인스턴스 블록 (instance block), 생성자 (1) | 2017.05.11 |
---|---|
[Java] 클래스 변수의 개념과 예제 (0) | 2017.05.10 |
[Java] 클래스 로딩과 메모리 영역 (stack, heap, method area) (0) | 2017.05.10 |
[Java] 생성자(constructor) 개념과 예제 (0) | 2017.05.10 |
[Java] 클래스(class) - 인스턴스 메소드 (instance method), this 문법 (0) | 2017.05.10 |