static 스태틱

han.user();·2023년 7월 5일
0
post-thumbnail

자바에서 static은 클래스의 멤버인 변수 또는 메서드에 대해 사용되는 키워드입니다.
static 키워드를 사용하면 해당 멤버가 인스턴스에 속하는 것이 아니라 클래스 자체에 속함을 나타냅니다. 이로써 클래스의 모든 인스턴스가 공유하는 변수 또는 메서드를 정의할 수 있습니다.

static 멤버는 클래스가 로드될 때 메모리에 할당되며, 클래스의 인스턴스를 생성하지 않고도 접근할 수 있습니다.
따라서, static 멤버는 인스턴스 멤버가 생성되기 이전에도 사용될 수 있습니다.

static 변수(정적 변수)는 클래스의 모든 인스턴스가 공유하는 변수입니다.
즉, 클래스의 모든 인스턴스가 동일한 static 변수의 값을 공유하게 됩니다.
static 변수는 클래스 변수라고도 불립니다.
static 변수는 클래스가 처음으로 로드될 때 초기화되며, 프로그램 실행 도중에 값이 변경될 수도 있습니다.

public class Counter {
    public static int count; // 정적 변수
    
    public Counter() {
        count++; // 생성자를 통해 count 변수 증가
    }
}

위의 예시에서 count 변수는 static으로 선언되어 있으므로, Counter 클래스의 모든 인스턴스가 이 변수를 공유합니다. 따라서 Counter 클래스의 여러 인스턴스를 생성할 때마다 count 변수가 증가하게 됩니다.

static 메서드(정적 메서드)는 인스턴스 메서드와 달리 특정 객체의 인스턴스에 속하지 않고 클래스 자체에 속합니다. 따라서 static 메서드 내에서는 this 키워드를 사용할 수 없으며, static 메서드 내에서는 static 멤버에만 접근할 수 있습니다. static 메서드는 클래스명을 통해 직접 호출됩니다.

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

위의 예시에서 add 메서드는 static으로 선언되어 있으므로, MathUtils 클래스의 인스턴스를 생성하지 않고도 직접 호출할 수 있습니다. 예를 들어, MathUtils.add(3, 5)와 같이 사용할 수 있습니다.

static 멤버를 사용하는 것은 주의가 필요합니다. static 멤버는 객체 지향 프로그래밍의 캡슐화 원칙을 어기는 경우가 있으므로, 적절한 상황에서 사용해야 합니다. 주로 공통적으로 사용되는 유틸리티 메서드나 상수를 정의할 때 static 멤버를 활용합니다.

profile
I'm still hungry.

0개의 댓글