- String[] args: String 객체로 정의된 args 라는 이름의 배열로 파라미터를 받겠습니다. 라는 의미
public class Main {
public static void main (String args[]) {
...
}
}
// String[] args, String args[], 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
https://www.geeksforgeeks.org/java-main-method-public-static-void-main-string-args/
'Java > topic' 카테고리의 다른 글
printf() 지시자 정리 (0) | 2022.10.30 |
---|---|
Java의 GC(가비지 컬렉션) (0) | 2022.10.30 |
Java의 Call by value(Pass by value), Swap 구현 방식 4가지 (0) | 2022.10.09 |
자바에서 컬렉션 정렬 시에 사용하는 인터페이스 2가지 - Comparable vs Comparator (0) | 2022.10.09 |
java, javac, javap, jar 명령어 간략 정리 (0) | 2022.04.07 |