본문 바로가기
개발기초지식

[면접질문대비] Static 이란 무엇인가?

by 수바니 2025. 6. 6.

1. ✅ static 이란?

Static 은 "정적인", 즉 클래스에 귀속되는 요소임을 나타내는 키워드

자바에서 static이 붙은 변수나 메서드는 인스턴스(객체)가 없어도 사용 가능하며, 클래스 수준에서 공유

 

2. 🔍 static이 붙을 수 있는 대상

대상 의미
변수 (static 변수) 모든 객체가 공유하는 클래스 변수
메서드 (static 메서드) 인스턴스 없이 호출 가능한 클래스 메서드
블록 (static 초기화 블록) 클래스 로딩 시 단 한 번 실행
클래스 (staitc 중첩 클래스) 외부 클래스에 종속된 내부 정적 클래스

 

3. 📦 static 변수 (클래스 변수)

public class User {
    public static int userCount = 0;

    public User() {
        userCount++;
    }
}

 

1. 모든 인스턴스가 같은 userCount를 공유

2. 객체 없이도 User.userCount로 접근 가능

3. 메모리상 **클래스 영역(Method Area)**에 저장됨

 

4. ⚙️ static 메서드

public class MathUtil {
    public static int add(int a, int b) {
        return a + b;
    }
}
int result = MathUtil.add(3, 5); // 객체 없이 사용 가능

 

1. 객체 없이도 호출 가능

2. this 키워드 사용 불가 (인스턴스가 없기 때문)

3. 주로 유틸리티 클래스에서 사용

 

5. 🧪 static 초기화 블록

public class App {
    static {
        System.out.println("클래스 로딩 시 단 한 번 실행");
    }
}

 

1. 클래스가 JVM에 처음 로딩될 때 실행됨

2. DB 연결 초기화, 상수 세팅 등에 사용

 

6. 🧱 static 중첩 클래스

public class Outer {
    static class Inner {
        void hello() {
            System.out.println("Hello from static inner class");
        }
    }
}

 

1. 외부 클래스의 인스턴스 없이 사용 가능 : new Outer.Inner()

2. 내부 클래스 중에서 유일하게 static을 붙일 수 있음

 

7. ❗ static의 주의사항

항목 설명
공유성 모든 인스턴스가 값을 공유하기 때문에 상태 관리 주의
테스트 어려움  상태가 고정되면 테스트 시 의존성 주입이 어려움
남용 금지 무분별한 static 사용은 객체지향 원칙 위반 가능성 있음

 

8. 🎯 언제 static을 써야 할까?

사용 경우 예시
인스턴스 없이도 동작해야 할 때 Math.random(), Collection.sort()
전역적으로 공유할 값이 있을 때 static final int MAX_USER = 100;
공통 유틸리티 로직 StringUtils, FileUtil 등

 

9. ✅ 결론 정리

개념 요약
static 이란? 클래스 레벨에서 공유되는 변수/메서드/블록
언제 사용? 공통 기능, 공유 데이터, 유틸리티 메서드 등
장점 메모리 절약, 접근성이 높음
단점  OOP 위반 가능성, 테스트 어려움

 

static은 클래스에 속한 요소를 정의하는 키워드이며, 객체 없이 사용할 수 있는 메서드나 변수, 유틸리티 함수 등에 유용하게 쓰임