본문 바로가기
Java/topic

public static void main(String[] args) 의 의미

by Ellery 2022. 4. 26.
  • String[] args: String 객체로 정의된 args 라는 이름의 배열로 파라미터를 받겠습니다. 라는 의미
    public class Main {
        public static void main (String args[]) {
            ...
        }
    }

    // String[] args, String args[], String... args 셋 다 사용 가능함

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

  • 자바파일을 컴파일 한 뒤 실행할 때의 과정
    • 1. javac Main.java
    • 2. java Main <parameter> : Main.class 를 실행하면서 파라미터를 전달하면 문자열 배열로 받음
  • 엔트리포인트로서의 main()
    • 런타임 라이브러리가 프로그램을 초기화하고 진입하는 진입점. CPU의 제어가 OS에서 프로그램으로 넘어가는 부분이다.
    • main() - C나 Java를 비롯한 프로그래밍 언어나 OS에서 프로그램은 오직 1개의 엔트리 포인트를 갖는데 자바에서는 main이라는 이름의 정적메소드를 사용한다.
      • JS나 python, shellscript 같은 스크립트 언어의 경우에는 명확한 엔트리포인트가 없이 코드 시작부터 끝날때까지 실행된다.
      • JVM의 엔트리 포인트로서 제일 먼저 클래스 내의 main(String[] args)가 실행됨.
    • 클래스와 패키지 밖에 있는 JVM이 main()에 접근해야 하므로 public 접근 제어자를 쓴다
    • JVM이 인스턴스를 생성하지 않고 메모리(method area)에 있는 main()에 접근하는 것이 더 빠르므로 static 메서드로 선언한다. 또한 클래스 메서드으로 선언하면 main() 메서드가 단 1개만 존재할 수 있고 오버로딩 할 수도 없다.
    • main() 메서드의 라이프사이클 자체가 프로그램의 실행과 종료이므로 반환값이 딱히 필요가 없어 void 타입을 쓴다.

https://docs.oracle.com/en/java/javase/16/docs/api/jdk.compiler/com/sun/tools/javac/Main.html

 

Main (Java SE 16 & JDK 16)

public class Main extends Object A legacy programmatic interface for the Java Programming Language compiler, javac. See the jdk.compiler module for details on replacement APIs. Constructor Summary Constructors Deprecated, for removal: This API element is s

docs.oracle.com

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

 

Java main() Method - public static void main(String[] args) - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org