클래스 수준에서 공유되는 멤버 정의 시 static 제한자 사용하는데, 정적 메서드는 이 경우 중 하나이다.
정적 메서드란 상태를 가지고 있지 않은 단순히 메소드만 가진 구조를 말한다.
1. 객체 생성 없이 호출 가능 (객체와 무관하게 동작)
2. 유틸리티 만들 때 유용하게 사용
예제:
public class Calculator {
public static void main(String[] args) {
// 1 (객체무관)
int result = Calculator.add(5, 3);
System.out.println(result); // 8 출력
}
// 2 (유틸리티)
public static int add(int a, int b) {
return a + b;
}
}
언제 정적 메서드를 사용?
public class A {
public static void staticMtd() {
System.out.println("static method!\n");
}
public static void nonStaticMtd() {
System.out.println("non-static method!\n");
}
}
public class Main {
public static void main(String[] args) {
A.staticMtd(); // O
A.nonStaticMtd(); // X
A a = new A();
A.staticMtd(); // X
A.nonStaticMtd(); // O
}
}