자바에서 static은 클래스 멤버를 정의할 때 사용되는 키워드이다. static 키워드가 사용된 변수나 메서드는 해당 클래스의 인스턴스와 관계없이 클래스 자체에 속한다. 즉, 클래스의 모든 인스턴스가 동일한 static 멤버를 공유한다.
1. 정적 변수 (Static Variables):
정적 변수는 클래스에 속하며, 클래스의 모든 인스턴스가 공유한다. 따라서, 객체를 생성하지 않고도 클래스 이름을 통해 접근할 수 있다.
public class Example {
static int count = 0; // 정적 변수
public static void main(String[] args) {
Example.count++; // 정적 변수 접근
System.out.println("Count: " + Example.count); // 출력: Count: 1
Example obj1 = new Example();
Example obj2 = new Example();
obj1.count++;
System.out.println("Count from obj1: " + obj1.count); // 출력: Count from obj1: 2
System.out.println("Count from obj2: " + obj2.count); // 출력: Count from obj2: 2
}
}
2. 정적 메서드 (Static Methods):
정적 메서드는 클래스 레벨에서 호출되며, 인스턴스를 생성하지 않고도 호출할 수 있다. 정적 메서드 내에서는 인스턴스 멤버에 직접 접근할 수 없다.
public class Example {
static void display() { // 정적 메서드
System.out.println("This is a static method.");
}
public static void main(String[] args) {
Example.display(); // 정적 메서드 호출
}
}
- 정적 멤버는 클래스의 모든 인스턴스에 대해 동일한 값을 유지하며, 객체를 생성하지 않고도 접근할 수 있다.
- 정적 메서드는 인스턴스 멤버에 직접 접근할 수 없다.
- 주로 유틸리티 메서드나 상수를 정의할 때 사용된다.
- 정적 멤버는 프로그램이 시작될 때 메모리에 할당되며, 프로그램이 종료될 때까지 유지된다.
'JAVA' 카테고리의 다른 글
[JAVA] Abstract 예제 (0) | 2024.03.26 |
---|---|
[JAVA] Abstract (0) | 2024.03.26 |
[JAVA] Call By Value / Call By Reference (0) | 2024.03.25 |
[JAVA] 오버로딩(Overloading)과 오버라이드(Override) (0) | 2024.03.25 |
[JAVA] Class (0) | 2024.03.25 |