`static`은 Java 프로그래밍 언어에서 사용되는 키워드로, 특정 멤버(변수, 메서드)를 클래스 레벨에 속하도록 지정하는 데 사용됩니다. `static` 멤버는 클래스의 인스턴스에 종속되지 않고, 클래스 자체에 속합니다. 여러 인스턴스가 해당 `static` 멤버를 공유하게 됩니다.
1. **`static` 변수 (클래스 변수):**
- 클래스 레벨에 선언되어 클래스의 모든 인스턴스 간에 공유됩니다.
- 인스턴스 생성 없이도 클래스 이름을 통해 접근할 수 있습니다.
- 주로 상수나 모든 인스턴스에서 공통으로 사용되는 속성에 사용됩니다.
public class MyClass {
// static 변수 (클래스 변수)
public static int staticVariable = 10;
public static void main(String[] args) {
// 클래스 이름을 통한 접근
System.out.println(MyClass.staticVariable);
}
}
2. **`static` 메서드 (클래스 메서드):**
- 클래스 레벨에 속하며 인스턴스를 생성하지 않고도 호출할 수 있습니다.
- 주로 유틸리티 메서드나 객체 생성 없이 수행되는 작업에 사용됩니다.
public class MathUtils {
// static 메서드 (클래스 메서드)
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
// 인스턴스 생성 없이 호출 가능
int result = MathUtils.add(5, 3);
System.out.println(result);
}
}
3. **`static` 블록:**
- 정적 블록은 클래스가 로딩될 때 실행되는 블록입니다. 클래스가 처음으로 로딩될 때 한 번만 실행됩니다.
- 주로 클래스 초기화에 필요한 작업을 수행하는 데 사용됩니다.
public class StaticBlockExample {
// static 블록
static {
System.out.println("This is a static block.");
}
public static void main(String[] args) {
// 클래스를 사용하는 메인 메서드
}
}
4. **`static` 클래스:**
- 중첩 클래스 내에 `static` 키워드를 사용하면, 해당 클래스는 바깥쪽 클래스의 인스턴스에 종속되지 않습니다.
public class OuterClass {
// static 중첩 클래스
static class StaticNestedClass {
// ...
}
}
주의: `static` 멤버는 인스턴스 변수 및 메서드에 비해 메모리를 적게 사용하지만, 공유되는 특성으로 인해 신중하게 사용해야 합니다. 상황에 따라 적절한 사용이 필요하며, 너무 남발하면 객체지향의 장점을 잃을 수 있습니다.
'게으른 개발자의 끄적거림' 카테고리의 다른 글
try catch exception 설명 (0) | 2024.01.03 |
---|---|
private static 쓰는 경우 (0) | 2024.01.03 |
싱글톤 패턴(Singleton Pattern)이란? (0) | 2024.01.02 |
Java 업로드 (.pdf .jpg .zip) (0) | 2023.12.28 |
Java EE란? (0) | 2023.12.27 |