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 |