본문 바로가기
개발언어/JAVA

[JAVA] 자바의 메인 메서드 public static void(String [] args){} 를 사용하는 이유

by 코딩 시그널 2021. 1. 6.
반응형

오늘은 자바 프로그램을 작성할 때 소스 도입부에 있는, 우리가 당연히 써왔던 자바의 메인 메서드인 public static void main(String [] args){}가 왜 이런 구조를 갖게 되었는지 살펴보겠습니다. 간단히 말하면 JVM 때문입니다.

Main

  • JVM이 처음 실행할 메서드가 뭔지 알 수 있도록 정해놓은 규칙

public static void main(String [] args)라는 형식을 가진 메서드가 실행되면 자바는 가장 먼저 실행시킨다는 특징을 가지고 있습니다. 또한 Main은 여러 클래스와 연결될 수 있는 중심부 역할을 합니다. 

 

Public

  • JVM(Java Virtual Machine)이 접근하기 위해서 public을 사용

public은 접근제어자입니다. public 접근 제어자는 어느 클래스에서든 해당 객체를 참조 가능하게 합니다. Main을 실행하는데, Main에서는 다른 클래스의 메서드 등을 호출해야 하는데, 만약 Main 자체가 다른 곳에서 접근을 허용하지 않는다면 문제가 생길 수밖에 없습니다. 때문에 Main의 접근 제한자를 public으로 선언한 것입니다.

 

static

  • 프로그램의 시작과 끝을 함께하는 Main 메서드는 프로그램이 종료되는 시점까지 유지해야 하기 때문에 static으로 선언

static이란 정적이란 뜻으로 메서드에 붙이게 되면 정적 메서드임을 나타냅니다. static으로 선언하게 되는 경우 자바가 컴파일되는 시점(클래스 로드)에 정의가 됩니다. 따로 인스턴스화 하지 않아도 method 영역 메모리에 호출되어 이렇게 호출된 것들은 프로그램이 종료되기까지 유지됩니다. 특히나 main 메서드처럼 프로그램의 시작점이 되는 요소는 객체를 생성하지 않아도 작업을 수행해야 하기 때문에 static이어야 합니다.

 

void

  • 메인 메서드를 호출하는 JVM(Java Virtual Machine)에서 반환 값을 요구하지 않으니 void타입을 사용

타입이 void라는 것은 반환할 것이 없다는 의미입니다. 우리는 프로그램을 사용할 때 프로그램이 실행되는 시점에서만 메시지를 주고받기 때문에, 프로그램이 종료되는 시점에서 반환되는 값은 전혀 의미가 없게 됩니다. 

 

String [] args

  • 외부에서 값을 받아오기 위해 사용한 매개변수이다.

String은 문자열을 나타내는 자바의 자료형이고, args []는 String 자료형에 대한 변수명으로 args 뒤에 []가 있으므로 배열임을 의미합니다. String [] args는 프로그램 실행 시 매개변수를 보내서 실행할 수 있다는 것을 뜻합니다. 즉 우리가 Command Line으로부터 인자 값을 전달받기 위해 존재합니다. 1개를 사용할 수도 있고 여러 개를 사용할 수도 있기 때문에 배열을 사용합니다.

 

댓글