공통 기초메모리

검색

검색어를 입력해 개념, 문제, 필기를 찾습니다.

static 키워드 - C언어와 Java 비교

코딩C언어Java
읽는데 4분 소요
처음 쓰여진 날: 2026-03-31
마지막 수정일: 2026-05-19
조회수:

요약

C언어와 Java에서 static 키워드의 공통점과 차이점을 비교합니다. 둘 다 데이터 영역에 저장되고 한 번만 초기화되지만, C에서는 변수의 값을 메모리에 고정하고 Java에서는 멤버를 클래스에 고정합니다.

static 핵심 정리

이 페이지에서 다루는 C언어 static의 핵심 개념을 요약한 표입니다.

개념설명예시
static 선언변수 앞에 static 키워드 추가static int x = 0;
한 번만 초기화프로그램 시작 시 한 번만 초기화됨두 번째 호출에서도 이전 값 유지
값 유지함수 종료 후에도 값이 사라지지 않음함수를 반복 호출하면 이전 값이 누적되어 2 → 4 → 6처럼 증가
저장 위치데이터(Data) 영역에 저장지역 변수(스택)와 다른 위치
접근 범위선언된 함수 안에서만 접근 가능전역 변수와 달리 함수 밖 접근 불가

C언어에서 static은 주로 함수 안의 변수에 사용되어 값을 메모리에 고정합니다. 일반 지역 변수는 함수가 끝나면 사라지지만, static 변수는 함수가 끝나도 값이 유지됩니다. 사용 예제와 전역 변수와의 비교는 C언어 static 변수 페이지에서 자세히 다룹니다.

func()를 3번 호출했을 때 스택 영역의 x는 매번 2로 초기화되어 사라지고, 데이터 영역의 static int y는 2 → 4 → 6으로 누적되는 메모리 상태 비교
같은 함수를 3번 호출했을 때 일반 지역 변수와 static 변수의 메모리 상태 비교

static 핵심 정리

이 페이지에서 다루는 Java static의 핵심 개념을 요약한 표입니다.

개념설명예시
static 메서드인스턴스 없이 클래스명으로 호출 가능Gamja.check(1)
static 변수모든 인스턴스가 공유하는 변수static int count = 0;
클래스에 고정객체가 아닌 클래스 자체에 귀속됨클래스명.변수, 클래스명.메서드()
main 메서드프로그램 시작점, 항상 staticpublic static void main(...)

Java에서 static은 멤버를 클래스에 고정합니다. 인스턴스를 만들지 않아도 클래스명으로 바로 접근할 수 있고, 모든 객체가 같은 값을 공유합니다. static 메서드·변수의 사용법, 초기화 블록, 상속과 초기화 순서 같은 심화 주제는 Java static 페이지에서 자세히 다룹니다.

Gamja 인스턴스 2개가 메서드 영역의 같은 static count를 공유
Gamja 인스턴스 2개가 메서드 영역의 같은 static count를 공유

C와 Java에서 static의 공통점과 차이점 기초

C와 Java에서 static은 같은 키워드지만 강조하는 의미가 다릅니다.

공통점

공통점C언어Java
데이터 영역에 저장데이터 영역(Data Area)데이터 영역(Method Area)
한 번만 초기화프로그램 시작 시클래스 로딩 시
프로그램 종료까지 유지OO
초기값 자동 지정0으로 초기화각 타입마다 정해진 기본값으로 초기화 (int는 0, String은 null)

차이점

구분C언어Java
무엇을 고정?변수의 값을 메모리에 고정 (함수 종료 후에도 유지) — 자세한 예제는 C static 변수멤버를 클래스에 고정 (인스턴스 없이 접근) — 자세한 예제는 Java static
적용 대상변수변수 + 메서드
접근 범위선언된 함수 내부로 제한어디서든 클래스명.멤버로 접근
공유 개념해당 없음 (함수 내 값 고정)모든 인스턴스가 같은 값을 공유

정보처리기사 실기 대비 문제