Home

(Java 기초) main 메서드는 왜 static일까? - static의 개념과 진짜 이유

Published in java
September 01, 2024
1 min read
(Java 기초) main 메서드는 왜 static일까? - static의 개념과 진짜 이유

안녕하세요, 코딩하는곰입니다! 오늘은 Java를 처음 배울 때 모두가 궁금해하는 주제인 “main 메서드가 왜 static으로 선언되어야 하는지”에 대해 깊이 있게 알아보겠습니다. 이 질문은 단순해 보이지만, Java의 실행 원리와 JVM의 동작 방식을 이해하는 데 중요한 키포인트가 됩니다. 20년 넘게 Java를 다루어 온 저의 경험을 바탕으로 쉽고 명확하게 설명드리겠습니다.

1. static의 기본 개념 이해하기

static은 Java에서 매우 중요한 키워드로, “클래스 수준”의 속성이나 메서드를 정의할 때 사용됩니다. static 멤버는 객체 생성 없이도 접근할 수 있다는 특징이 있습니다.

public class Example {
static int classVariable = 10; // 클래스 변수
int instanceVariable = 20; // 인스턴스 변수
public static void staticMethod() {
System.out.println("This is static method");
}
public void instanceMethod() {
System.out.println("This is instance method");
}
}

위 예제에서 classVariablestaticMethod()는 객체 생성 없이 Example.classVariable, Example.staticMethod()로 접근 가능합니다. 반면 인스턴스 변수와 메서드는 반드시 new Example()로 객체를 생성해야 사용할 수 있습니다.

(Java 기초) main 메서드는 왜 static일까? - static의 개념과 진짜 이유
(Java 기초) main 메서드는 왜 static일까? - static의 개념과 진짜 이유


2. JVM과 main 메서드의 관계

Java 프로그램이 실행될 때 JVM은 다음과 같은 순서로 동작합니다:

  1. JVM이 시작되며 메모리 영역을 초기화
  2. 클래스 로더가 main 메서드가 포함된 클래스를 로드
  3. 이 시점에는 아무런 객체도 생성되지 않은 상태
  4. JVM이 main 메서드를 찾아 실행 여기서 핵심은 3번입니다. main 메서드가 프로그램의 시작점이므로, JVM은 객체 생성 전에 이 메서드를 호출할 수 있어야 합니다. 만약 main이 static이 아니라면, JVM은 먼저 해당 클래스의 객체를 생성해야 하는데, 이는 “닭이 먼저냐 달걀이 먼저냐”의 문제와 같습니다.

(Java 기초) main 메서드는 왜 static일까? - static의 개념과 진짜 이유
(Java 기초) main 메서드는 왜 static일까? - static의 개념과 진짜 이유


두뇌 건강을 위한 재미있는 퍼즐 게임을 찾고 있다면, 크립토 할아버지의 스토리와 함께하는 스도쿠 저니를 추천합니다.

3. static main의 실제 동작 방식 심층 분석

main 메서드의 표준 시그니처를 자세히 살펴보겠습니다:

public static void main(String[] args) {
// 프로그램 시작 코드
}
  • public: JVM이 어디서든 접근 가능해야 함
  • static: 객체 생성 없이 호출 가능
  • void: 반환값이 없음 (JVM으로 돌려줄 것이 없음)
  • String[] args: 커맨드 라인 인자 전달 JVM의 Launcher 클래스는 내부적으로 다음과 유사한 방식으로 main을 호출합니다:
// JVM 내부의 가상 코드
Class<?> mainClass = Class.forName(className);
Method mainMethod = mainClass.getMethod("main", String[].class);
mainMethod.invoke(null, new Object[] { args }); // static이므로 첫 인자가 null

이 코드에서 알 수 있듯, JVM은 리플렉션을 통해 static 메서드인 main을 호출하며, 이때 객체 인스턴스(null)를 전달하지 않습니다.

(Java 기초) main 메서드는 왜 static일까? - static의 개념과 진짜 이유
(Java 기초) main 메서드는 왜 static일까? - static의 개념과 진짜 이유


집중력과 논리적 사고력을 기르고 싶다면, 클래식, 데일리, 스토리 모드가 있는 스도쿠 저니를 설치해보세요.

지금까지 main 메서드가 static이어야 하는 진짜 이유에 대해 깊이 있게 알아보았습니다. 이 내용은 Java의 근본적인 동작 원리를 이해하는 데 매우 중요합니다. 처음 Java를 배울 때는 이런 내용이 와닿지 않을 수 있지만, 경력이 쌓일수록 이러한 기본 개념의 중요성을 더욱 실감하게 됩니다. 혹시라도 더 궁금한 점이 있으시다면 댓글로 남겨주세요. 코딩하는곰이 직접 답변드리겠습니다. 다음 시간에는 더 유익한 Java 주제로 찾아뵙겠습니다. 감사합니다!

📅 다양한 문화행사를 한눈에 보고 싶다면, 도째비페스타를 참고해보세요.









최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기
최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기



다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기
다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기



비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기
비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기




Tags

#developer#coding#java

Share

Previous Article
(자바 기초) 첫 프로그램 구조 완벽 해부 - class, main, 파일명의 관계

Related Posts

(Java 예외 처리 마스터하기) 다중 catch와 예외 흐름 제어의 모든 것 - 코딩하는곰의 20년 노하우
December 16, 2025
3 min