* C언어에서의 전역 변수(Global Variable) : 모든 파일 접근 가능
- 모든 파일에서 접근 가능(extern을 사용하면 다른 파일에서도 접근 가능)
- 프로그램이 시작될 때 할당되고 종료될 때 해제됨(데이터 영역에 저장)
- 여러 파일에서 공유 가능
* C언어에서의 static 변수
(1) static 전역 변수 : 같은 파일 접근 가능
- 같은 파일 내에서만 접근 가능(파일 스코프)
- 다른 파일에서 extern으로 접근할 수 없음
- 프로그램 시작될 때 할당되고 종료될 때 해제됨(데이터 영역에 저장)
(2) static 지역 변수 : 소속된 함수 내부에서만 접근 가능
- 해당 함수 안에서만 접근 가능하지만, 값은 유지됨
- 일반 지역 변수는 함수가 끝나면 사라지지만, static 지역 변수는 함수가 끝나도 값이 유지됨
- 해당 함수가 처음 호출될 때 한 번만 할당되며, 이후 프로그램이 종료될 때 해제됨(데이터 영역에 저장)
* Java에서의 static 변수 : 클래스에서 관리되며, 접근 제어자에 따라 어디서든 접근 가능할 수도 있음
- 클래스 단위로 관리되는 변수
- 객체마다 따로 존재하지 않고, 클래스 전체에서 공유됨
- 클래스를 처음 사용할 때(static 멤버에 접근할 때) 한 번만 메모리에 로드됨
- 모든 객체가 같은 변수를 공유함
* Java의 static 변수는 전역 변수와 비슷한 점이 많다
- 전역 변수처럼 프로그램 실행 내내 유지됨
- 접근 제어자에 따라 클래스 이름을 통해 어디서든 접근 가능할 수도 있음
- 여러 객체가 같은 값을 공유함
* 하지만 완전한 전역 변수는 아니다
- private을 사용하면 외부 접근을 막을 수 있음
- 클래스를 처음 사용할 때(static 멤버에 접근할 때) 메모리에 로드됨(지연 로드 가능)
- C의 전역 변수처럼 무조건 처음부터 존재하는 것이 아님
* 즉, Java의 static 변수는 제어 가능한 전역 변수로 볼 수 있음
'IT공부' 카테고리의 다른 글
[운영체제] 시스템 콜(System Call) (0) | 2025.02.27 |
---|---|
[C] 문자열 함수 (0) | 2025.02.01 |
[ETC] 메모리 원자성과 DB 원자성 (0) | 2025.01.24 |
[C++] 접근 제어자 private 자바와의 차이점 (0) | 2024.12.29 |
[ETC] 레드 블랙 트리 (0) | 2024.12.19 |