static은 '클래스의', '공통의' 라는 의미를 가짐
class StaticTest {
static int width = 100;
static int height = 300;
static {
// static 변수의 초기화 수행
}
static int max(int a, int b) {
return a > b ? a : b;
}
}
Java 변수에는 클래스변수, 인스턴스 변수, 지역변수가 있는데, 클래스 변수는 static이 붙은 변수이다.
인스턴스별로 독립적인 메모리 공간을 가지는 인스턴스 변수와는 달리, 클래스 변수는 모든 인스턴스들이 하나의 공통의 저장공간을 공유한다.
클래스 변수는 클래스가 메모리에 로딩되면 함께 생성되는 변수로, 따로 인스턴스를 생성한 뒤에 사용할 필요가 없다.
모든 인스턴스들이 공통된 값을 유지해야하는 경우 클래스 변수로 선언하여 사용한다.
public static 클래스변수는 전역변수와 같다.
public static int width = 100;
메서드에 static이 붙으면 클래스 메서드이고, 아니면 인스턴스 메서드이다.
같은 클래스 내의 메서드끼리는 참조변수 없이 서로 호출이 가능하다.
하지만, static 메서드는 인스턴스 메서드를 호출할 수 없다.
static 메서드는 인스턴스 메서드보다 먼저 생성되므로, static메서드 존재 시점에 인스턴스 메서드는 존재하지 않을 수 있기 때문이다.
Q. 어떠한 경우에 메서드를 클래스 메서드로 사용해야 하는가?
메서드 중에서 인스턴스 변수/메서드를 사용하지 않는 메서드는 static으로 선언하여 사용
1. 멤버변수 중에서, 모든 인스턴스들이 공통으로 사용하는 것에 static을 붙인다.
2. static 변수는 인스턴스 생성 없이 사용이 가능하다.
3. static 메서드는 인스턴스 변수를 사용할 수 없다. 인스턴스 메서드를 호출할 수 없다.
4. 메서드가 인스턴스 변수를 사용하지 않으면, static을 붙인다.
'JAVA > java' 카테고리의 다른 글
toString() (0) | 2020.04.20 |
---|---|
hashCode() (0) | 2020.04.20 |
private (0) | 2020.04.20 |
final (0) | 2020.04.20 |
대용량 파일 Java 배치 처리 (0) | 2020.04.20 |