Back-End
자바에서 전역변수와 멤버변수의 차이점
hoya7788
2024. 7. 29. 09:47
전역 변수 (Global Variable)
자바에서는 엄밀히 말해 "전역 변수"라는 개념이 없습니다. 이는 주로 전역 변수 개념이 C나 다른 언어에서 온 것이기 때문입니다. 자바에서는 전역 변수와 유사한 개념으로는 클래스 변수(static 변수)가 있습니다.
클래스 변수 (Class Variable)
- 정의: 클래스 변수는 클래스에 하나만 존재하며, 해당 클래스로 생성된 모든 객체가 공유합니다.
- 선언: static 키워드를 사용하여 선언합니다.
- 사용: 클래스명.변수명으로 접근합니다.
- 수명: 클래스가 메모리에 로드될 때 생성되어 프로그램이 종료될 때까지 존재합니다.
- 예시:

멤버 변수 (Member Variable)
멤버 변수는 클래스의 인스턴스 변수로, 객체마다 별도로 존재하는 변수입니다.
인스턴스 변수 (Instance Variable)
- 정의: 인스턴스 변수는 클래스의 각 인스턴스마다 개별적으로 존재합니다.
- 선언: 클래스 블록 내에서 선언되며, static 키워드 없이 선언합니다.
- 사용: 객체를 생성한 후, 객체명.변수명으로 접근합니다.
- 수명: 객체가 생성될 때 생성되어 객체가 더 이상 참조되지 않을 때 가비지 컬렉션에 의해 회수됩니다.
- 예시:

차이점 요약
- 소속: 클래스 변수는 클래스에 소속되어 있고, 멤버 변수는 객체에 소속되어 있습니다.
- 수명: 클래스 변수는 클래스가 로드될 때부터 프로그램이 종료될 때까지 존재하고, 멤버 변수는 객체가 생성될 때부터 해당 객체가 파괴될 때까지 존재합니다.
- 공유: 클래스 변수는 해당 클래스로 생성된 모든 객체가 공유하지만, 멤버 변수는 각 객체마다 별도로 존재합니다.
- 접근 방법: 클래스 변수는 클래스명으로 접근하고, 멤버 변수는 객체명으로 접근합니다.