static 메소드란?
- 메소드 앞에 static가 붙은 메소드이다.
- 객체 생성 없이 호출이 가능한 메소드
static 메소드와 인스턴스 메소드의 차이는 인스턴스 변수 사용 유무로 나뉜다.
- 인스턴스 메소드
- 인스턴스 생성 후, '참조 변수.메소드 명()'으로 호출한다.
- 인스턴스 멤버와 관련된 작업을 한다.
- 메소드 내에서 인스턴스 변수를 사용할 수 있다.
- 인스턴스 변수를 이용해서 작업을 하므로 변수의 묶음인 객체를 생성해야 인스턴스 메소드를 호출할 수 있다.
ex) Exam ex = new Exam(); ex.example = "예시";
- static 메소드(클래스 메소드)
- 객체 생성 없이 '클래스 명.메소드 명()'으로 호출이 가능하다.
- 인스턴스 멤버와 관련되지 않은 작업을 한다.
- 메소드 내에서 인스턴스 변수를 사용할 수 없다.
- 인스턴스 메소드와 달리 인스턴스 변수가 필요 없으므로 객체를 생성하지 않고도 호출할 수 있다.
ex) Math.random()
그러면 언제 static을 붙이면 좋은가?
메소드의 경우
- 인스턴스 변수를 사용하지 않는 경우에 static 붙인다.
int add() { return a + b } // a와 b는 인스턴스 변수이므로 static을 붙이지 않는다. static int add(int a, int b) { return a + b } // a, b는 로컬(지역) 변수이므로 static을 붙인다.
변수의 경우
- 속성(변수) 중에서 인스턴스 변수(개별 속성)는, static을 붙이지 않는다.
- 클래스 변수(공통 속성)는 static을 붙인다.
※ 호출의 차이
- static 메소드는 인스턴스 변수를 호출할 수 없지만 인스턴스 메소드는 static 변수를 호출할 수 있다.
- static 메소드는 인스턴스 메소드를 호출할 수 없지만 인스턴스 메소드는 static 메소드를 호출할 수 있다.
왜 static 메소드는 인스턴스 멤버(인스턴스 변수, 인스턴스 메소드)를 사용할 수 없는가?
-> 인스턴스 메소드를 이용하려면 인스턴스 변수를 사용하므로 객체 생성이 필요하다.
그러나 static 메소드는 항상 호출이 가능해야하는데, 객체가 있을지 없을지 모르기 때문이다. - static 메소드끼리, 인스턴스 메소드끼리는 호출이 가능하다.

'Java' 카테고리의 다른 글
| [JAVA] 데이터 추상화 vs 제어 추상화 (0) | 2025.10.09 |
|---|---|
| [Java] 객체지향개념I (0) | 2025.10.08 |
| [Java] 기본형 매개변수와 참조형 매개변수 (0) | 2025.10.03 |
| [Java] Primitive type(원시타입) vs. Reference type(참조타입) (3) | 2025.08.30 |
| [Java] 진법 변환 정리 (n진수 <-> 10진수) (0) | 2025.08.30 |