자바 JAVA/자바 기초
지역변수 인스턴스변수, local variable, instance variable
saml2l
2020. 5. 13. 11:26
자바에서 변수는 어느 위치에서 선언되었느냐에 따라서 그 종류가 달라진다.
변수의 종류 | 선언된 위치 | 생성시기 |
클래스 변수 (class variable) |
클래스 영역 | 클래스가 메모리에 올라갔을 때 |
인스턴스 변수 (instance variable) |
클래스 영역 | 인스턴스가 생성되었을 때 |
지역변수 (local variable) |
클래스 영역이외 (생성자, 메서드, 초기화 블럭 내부) |
변수 선언문이 수행되었을 때 |
- 지역변수 : 생성된 지역 내에서만 사용 가능하다.
- 메서드 내에서 선언되었으면 메서드 종료시 사라진다
- 반목문 내에 선언된 변수는 { } 중괄호 안에서만 사용 가능하며 블럭을 벗어나게 되면 사라진다.
for (int i = 0; i < 10; i++){
System.out.println(i); // i 는 { } 안에 있어서 유효하다. 실행가능
}
}
System.out.println(i); // { } 를 벗어낫기 때문에 변수 i 는 없다. 실행불가
}
- 인스턴스변수 : 클래스 영역에 선언되며, 인스턴스(객체)를 생성할 때 만들어진다.
- 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
- 학생이 10명이 있는데 클래스 변수로 저장을 한다면 모두 같은 변수 , name 과 age 를 공유하기 때문에 가장 최근에 선언된 값으로 바뀔 것이다. 그러나 인스턴스 변수로 저장을 하게 되면 10개의 학생 인스턴스 모두 독립적인 name 과 age 를 갖게 된다.
- 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
class Main {
public static void main(String[] args) {
Student Student1 = new Student();
// 인스턴스가 생성되었으니 Student 클래스 내부에 있는 인스턴스 변수를 사용할 수 있다
}
}
class Student {
String name; // 인스턴스 변수
int age; // 인스턴스 변수
}