티스토리 뷰
구분 |
멤버변수 |
지역변수 |
|
class 변수 |
instance 변수 |
||
선언 위치 |
클래스의 멤버로 선언 |
메소드 안에서 선언 |
|
선언 방법 |
static 선언 |
- |
- |
사용 메모리 |
code 또는 method |
heap |
stack |
생성 시점 |
프로그램 시작 시 |
객체 생성 시 |
메소드 실행 시 |
제거 시점 |
프로그램 종료 시 |
가비지 컬렉터에 의해 |
메소드 종료 시 |
- 자바의 변수는 크게 멤버변수와 지역변수로 구분
- 멤버변수는 다시 class 변수와 instance 변수로 구분
1) class 변수
- 클래스 변수는 static 키워드를 사용하여 클래스의 멤버로 선언된 변수
- 코드 영역이나 메소드 영역에 프로그램 시작과 동시에 생성
- 프로그램 종료될 때까지 존재하기 때문에, 프로그램 전반에 걸쳐 사용되는 데이터일 때 클래스 변수로 저장
2) instance 변수
- static 키워드 없이 클래스의 멤버로 선언된 일반적인 멤버변수
- 객체 생성 시 힙 영역에 저장
- 서블릿의 경우 최초 요청시 객체가 생성되고, 일반 자바 객체는 new 키워드를 사용했을 때 객체 생성
- 힙 영역에 만들어진 instance 변수는 객체가 삭제 될 때까지 사용할 수 있음
- 서블릿 객체의 경우 웹 애플리케이션 서비스가 중지될 때 객체가 삭제되고, 일반 자바 객체의 경우 참조가 끊긴 후 가비지 컬렉터에 의해 삭제 됨
3) 지역변수
- 메소드 안에 선언된 변수로, 매개변수도 지역 변수에 해당
- 메소드가 실행 될 때 스택 영역에 저장되고 메소드가 종료 될 때 삭제됨
- 따라서 메소드 안에서만 사용 가능
'Java' 카테고리의 다른 글
Collection, Polymorphism, Generic (0) | 2018.01.23 |
---|---|
자바의 call by reference? call by value? (0) | 2017.02.09 |
try catch finally 실행 순서 (0) | 2017.02.01 |
String==null 과 String.isEmpty() 의 차이 (0) | 2017.01.24 |
ArrayList의 contains 메서드를 활용하는 방법 (0) | 2017.01.24 |