Language/JAVA
[JAVA] static 변수와 메서드
gangintheremark
2023. 7. 24. 11:27
728x90
static
static 은 정적, 고정된이란 의미이다. static 키워드를 이용해 static 변수와 static 메서드를 생성할 수 있는데 이를 정적 멤버 (=클래스멤버)라고 한다. static 키워드를 통해 생성된 정적 멤버들은 heap 영역이 아닌 static
영역에 생성된다. static 영역에 할당된 메모리는 모든 객체가 공유할 수 있다.
객체 생성 시 할당된 heap영역의 메모리는 Garbage Collector
를 통해 관리를 하지만 static 영역에 할당된 메모리는 관리 영역 밖에 존재하므로 static을 자주 사용하면 프로그램의 종료 시까지 메모리가 할당된 채로 존재한다.
✨ 특징
- 프로그램 실행 시 생성되어 종료 시 소멸
- 단 한 번만 생성
- 클래스명으로 접근 가능
- 자동초기화
- 여러 인스턴스가 공유하는 경우 사용
class Calculator {
public static String appName = "Calculator"; // static 변수, 프로그램 실행할 때 한 번 생성
public String date = "230718"; // 인스턴스 변수, 객체 생성할 때마다 매번 생성
public static int add(int x, int y) {
return x+y;
}
public int sub(int x, int y) {
return x-y;
}
}
public class Main {
public static void main(String[] args) {
System.out.println(Calculator.appName);
// static 메소드 이므로 객체 생성 없이 클래스명으로 접근 가능
System.out.println(Calculator.date); // error
// static 메소드가 아니므로 객체 생성 후에 사용 가능
System.out.println(Calculator.add(2,3));
// static 메소드이므로 객체 생성 없이 클래스명으로 접근 가능
System.out.println(Calculator.sub(5,3)); // error
// static 메소드가 아니므로 객체 생성 후에 사용 가능
Calculator c = new Calculator();
c.add(2, 3); // O 가능은 하지만 권장X
c.sub(5, 3); // O 객체 생성 후 접근
}
}
728x90