이번 포스팅에서는 Main() 메소드구조에 대해 상세하게 분석해보도록 하겠습니다.

class HelloProject {
    public static void main(String[] args)
    {
        System.out.println("Hello World");
    }
}

 

 

 

 

 

 

 

 

 

 

1. public

JAVA는 클래스 기반 언어이므로, JVM에서 엔트리포인트인 main 메소드에 자유롭게 접근하기

위해 public 접근 제어자가 반영 되어야 합니다.
private 로 지정하는 경우 JVM이 main 메소드를 엑세스 할 수 없으며 컴파일 시 오류가 발생합니다.

※ 엔트리포인트(entry point) : 프로그램 시작점

 

2. static

static 키워드 사용 시 main 메소드가 정적 메소드로 할당되어 객체(인스턴스)를 생성하지 않고

클래스 메소드를 호출할 수 있게 됩니다. 

 

3. void

JAVA 프로그램은 JVM 영역에서 OS와 독립적으로 메인 스레드(Main Thread)로 실행됩니다.

따라서 main 메소드가 종료되면 JAVA 프로그램도 종료되므로 C와 C++과 같이 종료상태를 

리턴하지 않도록 설계되었습니다.

 

4. Main()

JVM이 프로그램의 진입점을 찾는 식별자이며 Main 클래스에서 static void Main(String[] args)

구문만 엔트리포인트로 인식하도록 설계되어 있습니다.   

오버로딩(Overloading) 된 다른 형태의 main()함수는 동작하지 않습니다.

 

5. String[] 인수

통상적으로 배열의 이름은 args 으로 정의하지만 다른 명칭으로 사용 가능합니다.
String 객체로 정의되었기 때문에 배열 선언방식은 아래의 3가지 모두 가능합니다.

public static void Main(String[] args)
public static void Main(String args[])
public static void Main(String... args)

 

구글에서 검색한 결과를 요약해보면,

 

자바 프로그램은 실행하면 main 을 찾고 static 변수와 메소드를 위해 메모리를 할당하는 작업이 우선됩니다.

프로그램 전반에 걸쳐서 계속해서 참조되어야하는 중요한 것은 static 으로 선언을 해야합니다.

필요에 따라서 딱 한번만 실행시키면 되는 것은 인스턴스 변수로 쓰는게 더 효율적입니다.

이때 메모리는 해당하는 블럭안에서만 할당되며, 블럭이 끝나면 호출된 인스턴스도 사라집니다.

 

레퍼런스

https://www.geeksforgeeks.org/java-main-method-public-static-void-main-string-args/

 읽어주셔서 감사합니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기