[자바 프로그램은 어떻게 시작될까?]
자바 프로그램이 실행되면 가장먼저 JVM이 동작한다.
그리고 JVM이 시작되면 프로그램을 시작해야하는데 아무 객체도 없고 뭘 먼저 실행해야하지? 라는 물음에 빠지게 된다.
이 물음을 해결하기 위해 등장한 개념이 static이다
[static은 객체없이도 존재하는것]
static이 붙어있는 변수 or 메서드는 객체가 없어도 메모리에 먼저 올라간다.
이말인 즉 객체를 만들기 전에도 이미 존재하고 그렇다는 것은 클래스 이름만으로 바로 접근이 가능하다는것이다.
Example.staticMethod(); // 클래스로 바로 호출 가능!
[instance는 "객체에 소속된 것"]
반대로 static이 없는 변수나 메서드는 객체(instance)에 소속된다
이말인 즉 new로 객체를 만들어야 하고 객체마다 각각 따로따로 존재한다는 뜻이다.
Example ex = new Example(); // 객체를 선언
ex.instanceMethod();
➡️ 이 메서드는 ex라는 객체의 소유물이다.
➡️ 다른 객체를 만들면 또 다른 instance가 생성된다.
[코드로 알아보자]
class Example {
static int staticValue = 10;
int instanceValue = 20;
static void staticMethod() {
System.out.println("static 메서드");
}
void instanceMethod() {
System.out.println("instance 메서드");
}
}
➡️ saticValue: 클래스 전체가 공유하는 값
➡️ instanceValue: 객체마다 따로 가지는 값
➡️ staticMethod(): 객체없이도 호출 가능한 메서드
➡️ instanceMethod(): 객체가 있어야 호출 가능한 메서드
[그래서 main메서드는 왜 static을 사용하는건데?]
main메서드는 말 그대로 main이다.
자바 프로그램의 시작점을 나타낸다.
JVM의 입장에서 보면 흐름은 다음과 같다.
1. JVM실행
2. 아직 객체가 없음
3. static main을 발견
4. main을 실행
5. main안에 new로 객체 생성을 시작
즉, 객체를 만들기 전 main이 실행되어야 하기 때문에 main은 반드시 static이여야 한다.
'Java' 카테고리의 다른 글
| [Java] 많은 프로그램들은 왜 여전히 자바(Java)를 사용할까? (0) | 2026.01.22 |
|---|---|
| [Java] 생성자(Constructor)에 대해 알아보자 (0) | 2026.01.14 |
| [Java] 오버로딩(Method Overloading) (0) | 2026.01.11 |
| [Java] Garbage Collector에 대해 알아보자 (0) | 2026.01.04 |
| [Java] 단위 테스트와 통합 테스트의 차이점과 장단점 (0) | 2026.01.02 |