JAVA/포스팅

자바 static 제어자

짜집퍼박사(짜박) 2023. 11. 12. 00:06

static 제어자는 자바에서 변수, 메서드, 블록, 중첩 클래스 등에 적용할 수 있는 제어자입니다. static으로 선언된 멤버는 클래스에 속하게 되어 객체의 생성과 상관없이 사용할 수 있습니다. 클래스 변수, 클래스 메서드 등을 선언할 때 주로 사용되며, 객체 간에 공유되는 자원을 표현하는 데 유용합니다.

 

1. static 제어자의 사용 예제

 

1.1. 변수에 static 제어자 사용 (클래스 변수)

// Example.java
public class Example {
    // 클래스 변수 (static 변수)
    private static int staticVar = 0;

    public Example() {
        // 생성자에서 클래스 변수(static 변수) 사용 가능
        staticVar++;
    }

    public static void printStaticVar() {
        System.out.println("Static Variable: " + staticVar);
    }
}

위의 예제에서 staticVar는 클래스 변수로, 객체가 생성되기 전에 클래스에 속합니다.

 

1.2. 메서드에 static 제어자 사용 (클래스 메서드)

// Example.java
public class Example {
    // 클래스 메서드 (static 메서드)
    public static void staticMethod() {
        System.out.println("This is a static method.");
    }
}

static 메서드는 객체의 생성과 무관하게 클래스 이름으로 직접 호출할 수 있습니다.

 

1.3. 정적 블록 (static block) 사용

// Example.java
public class Example {
    // 정적 블록 (클래스가 로딩될 때 실행)
    static {
        System.out.println("Static block is executed.");
    }

    public static void main(String[] args) {
        // main 메서드에서 객체 생성하지 않아도 정적 블록이 실행됨
        System.out.println("Inside the main method.");
    }
}

static 블록은 클래스가 로딩될 때 실행되며, 주로 클래스 초기화 작업에 사용됩니다.

 

2. static 제어자의 특징

 

- 클래스 변수(static 변수)는 객체가 생성되기 전에 이미 메모리에 존재하며, 모든 객체가 공유합니다.
- 클래스 메서드(static 메서드)는 객체의 생성과 무관하게 호출할 수 있으며, 주로 유틸리티 메서드나 팩토리 메서드 등에 사용됩니다.
- 정적 블록은 클래스가 로딩될 때 실행되며, 클래스 초기화 시 필요한 작업을 수행할 수 있습니다.
- static 멤버는 객체가 아닌 클래스에 속하므로, 객체를 생성하지 않고도 접근 가능합니다.

 

3. 주의사항

 

- static 멤버는 객체에 종속되지 않기 때문에 객체의 상태에 영향을 받지 않습니다.
- 클래스 변수나 클래스 메서드는 모든 객체에서 공유되기 때문에 주의해서 사용해야 합니다.
- static 제어자는 메모리 사용 및 성능 향상을 위해 사용되지만, 오용 시에는 코드의 유지보수가 어려워질 수 있습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 synchronized 제어자  (0) 2023.11.12
자바 abstract 제어자  (0) 2023.11.12
자바 final 제어자  (0) 2023.11.12
자바 private 제어자  (0) 2023.11.11
자바 default 제어자  (0) 2023.11.11