어제 오늘 내일

[Java] static이란? 본문

IT/Java

[Java] static이란?

hi.anna 2025. 12. 18. 07:06

 

Java에서 static 키워드는 클래스에 속하는 멤버를 정의할 때 사용하는 중요한 키워드입니다. 객체를 만들지 않고도 사용할 수 있으며, 프로그램 전체에서 공유되는 특성을 가집니다. 이 글에서는 static의 개념과 사용 방법을 간단하고 명확하게 정리합니다.

 

1. static의 기본 개념

static은 클래스 수준의 변수나 메서드를 정의하는 데 사용되는 키워드입니다.
즉, 객체마다 따로 존재하는 것이 아니라 클래스가 로딩될 때 단 한 번 생성되고 모든 인스턴스가 공유합니다.

예:

class Counter {
    static int count = 0;
}

설명

  • count는 객체가 아닌 클래스에 속함
  • 프로그램에서 하나만 존재

 

2. static 변수 (클래스 변수)

객체마다 다른 값을 가지는 인스턴스 변수와 달리, static 변수는 모든 객체가 공통으로 사용하는 변수입니다.

class Counter {
    static int count = 0;
    int id;

    public Counter() {
        count++;
        this.id = count;
    }
}

Counter c1 = new Counter();
Counter c2 = new Counter();
System.out.println(c1.id); // 1
System.out.println(c2.id); // 2

설명

  • static 변수 count는 모든 객체가 공유
  • 객체가 생성될 때 증가하므로 id가 순서대로 부여됨

 

3. static 메서드 (클래스 메서드)

static 메서드는 객체 생성 없이 호출할 수 있는 메서드입니다.

class MathUtil {
    public static int add(int a, int b) {
        return a + b;
    }
}

int result = MathUtil.add(3, 5); // 객체 없이 호출

특징

  • 인스턴스 변수 접근 불가
  • 객체 정보에 의존하지 않는 기능을 정의할 때 사용

 

4. 대표적인 static 사용 예 (Java 기본 API)

Java 표준 라이브러리에도 static은 매우 많이 사용됩니다.

Math.random();
Integer.parseInt("10");
Arrays.sort(arr);

설명

  • 객체를 만들 필요 없이 바로 사용 가능한 기능 제공

 

5. static 블록

클래스가 로딩될 때 단 한 번 실행되는 초기화 블록입니다.

class InitExample {
    static int value;

    static {
        value = 100; // 클래스 초기화 작업
    }
}

설명

  • static 변수 초기화나 설정 작업에 사용

 

6. 언제 static을 사용할까?

  • 객체마다 달라질 필요 없는 값
  • 여러 곳에서 공유해야 하는 데이터
  • 유틸리티 성격의 메서드 (예: 계산, 변환)
  • 프로그램 시작 시 한 번만 초기화하면 되는 값

 

7. 주의할 점

  • 공유되므로 값 변경에 주의해야 함
  • 객체 상태에 의존하는 로직에는 사용하면 안 됨
  • 과도한 static 사용은 설계의 유연성을 해칠 수 있음

 

 

반응형

'IT > Java' 카테고리의 다른 글

[Java] void 메소드 호출  (0) 2025.12.19
[Java] void 뜻  (0) 2025.12.19
[Java] 클래스와 객체 차이  (0) 2025.12.18
[Java] 삼항연산자, 중첩 삼항연산자  (0) 2025.12.17
[Java] @Override 어노테이션  (0) 2025.12.17
Comments