[DEV] J-Jay

static 본문

Back-end/Java

static

J-Jay 2023. 4. 17. 23:39
728x90

Java에서 static은 객체가 아닌 클래스에 속하는 키워드이다.

 

클래스 변수

클래스 변수(static 변수)는 클래스 내부에서 선언되며 모든 객체가 공유하는 변수이다

클래스 변수는 객체를 생성하지 않고도 사용할 수 있으며, 클래스 이름으로 접근한다.

public class MyClass {
    static int classVar = 0;
    int instanceVar = 0;
}

 

클래스 메서드

클래스 메서드(static 메서드)는 클래스 내부에서 선언되며 객체를 생성하지 않고도 호출할 수 있는 메서드다.

클래스 메서드는 클래스 변수만 사용할 수 있으며, 인스턴스 변수를 사용할 수 없다

public class MyClass {
    static int classVar = 0;
    int instanceVar = 0;

    static void classMethod() {
        // 클래스 변수에 접근
        classVar++;
        // 인스턴스 변수에 접근 불가능
        // instanceVar++;
    }
}

※참고

인스턴스 변수는 객체를 생성한 후에 사용할 수 있지만, static 메서드는 객체 생성 없이 클래스 이름으로 직접 호출이 가능하기 때문에 인스턴스 변수를 사용할 수 없다.  만약 static 메서드에서 인스턴스 변수를 사용하고자 한다면, 메서드의 매개변수로 해당 인스턴스를 받아와서 사용하거나, 해당 인스턴스 변수를 static으로 변경해야 한다

 

정적 블록

정적 블록(static block)은 클래스가 로드될 때 실행되는 블록이다.클래스 변수의 초기화나 예외처리 등을 위해 사용된다. 

public class MyClass {
    static int classVar;
    
    static {
        // 클래스 변수 초기화
        classVar = 0;
    }
}
중첩 클래스

중첩 클래스(static nested class)는 다른 클래스 내부에서 선언되며 static 키워드를 사용하여 정의된다.

외부 클래스의 인스턴스와는 관련이 없으며, 외부 클래스의 인스턴스 멤버에 접근할 수 없다. 

public class OuterClass {
    static class StaticNestedClass {
        // 중첩 클래스 내부에서 사용할 수 있는 멤버 변수와 메서드 정의
    }
}

'Back-end > Java' 카테고리의 다른 글

Generic  (0) 2023.04.29
String  (0) 2023.04.23
JVM(Java Virtual Machine)  (0) 2023.04.17
Method(메소드)  (0) 2023.04.16
Class(클래스)  (0) 2023.04.16