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 {
// 중첩 클래스 내부에서 사용할 수 있는 멤버 변수와 메서드 정의
}
}