멤버 변수(필드)의 종류
인스턴스 변수: static 이 붙지 않은 멤버 변수
- static 이 붙지 않은 멤버 변수는 인스턴스를 생성해야 사용할 수 있고, 인스턴스에 소속되어 있다
- 인스턴스 변수는 인스턴스를 만들 때 마다 새로 만들어진다.
클래스 변수: static 이 붙은 멤버 변수, 예) count
- 클래스 변수, 정적 변수, static 변수 로 부른다.
- 클래스에 바로 접근해서 사용할 수 있어서 클래스 변수라 한다.
- 클래스 변수는 자바 프로그램을 시작할 때 딱 1개가 만들어진다.
- 인스턴스와는 다르게 보통 여러곳에서 공유하는 목적으로 사용된다.
변수와 생명주기
지역 변수(매개변수 포함)
- 지역 변수는 스택 영역에 있는 스택 프레임 안에 보관된다.
- 메서드가 종료되면 스택 프레임도 제거 되는데 이때 해당 스택 프레임에 포함된 지역 변수도 함께 제거된다.
- 따라서 지역 변수는 생존 주기가짧다.
인스턴스 변수
- 인스턴스에 있는 멤버 변수를 인스턴스 변수라 한다. 인스턴스 변수는 힙 영역을 사용한다.
- 힙 영역은 GC(가비지 컬렉션)가 발생하기 전까지는 생존하기 때문에 보통 지역 변수보다 생존 주기가 길다.
클래스 변수
- 클래스 변수는 메서드 영역의 static 영역에 보관되는 변수이다. 메서드 영역은 프로그램 전체에서 사용하는 공용 공간이다.
- 클래스 변수는 해당 클래스가 JVM에 로딩 되는 순간 생성된다. 그리고 JVM이 종료될때 까지 생명주기가 어어진다.
- 따라서 가장 긴 생명주기를 가진다.
main() 메서드는 정적 메서드
- 인스턴스 생성 없이 실행하는 가장 대표적인 메서드
- main() 메서드가 static 이기 때문이다.
- 정적 메서드는 정적 메서드만 호출할 수 있다.
- 정적 메서드인 main() 이 호출하는 메서드에는 정적 메서드를사용했다.
- 정적 메서드인 main() 메서드가 같은 클래스에서 호출하는 메서드도 정적 메서드로 선언해서 사용했다.
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] Array (0) | 2024.03.30 |
---|---|
[Java] 메모리 구조 (0) | 2024.03.30 |
[Java] package 규칙 (+명명 규칙) (0) | 2024.03.30 |
[Java] this 활용 추세 (0) | 2024.03.30 |
[Java] @Override 작성 이유 / 어노테이션 (0) | 2024.03.30 |