2017-09-11 3 views
0

과부하 된 main 메소드에서 signature String [] args를 갖는 main 메소드가 진입 점으로 간주되는 이유는 무엇입니까?Java 기본 메소드

public class Test { 
    public static void main(String[] args) { 
     System.out.println("why this is being printed"); 
    } 

    public static void main(String arg1) { 
     System.out.println("why is this not being printed"); 
    } 

    public static void main(String arg1, String arg2) { 
     System.out.println("why is this not being printed"); 
    } 
} 
+1

: 메소드 선언은 다음과 같은 형태를 가지고있다. –

답변

2

주요 방법은 유형 String[]의 때문에 단일 문자열 2 개 문자열 형태는 유효하지 주요 방법이며, 같은 옵션 만 허용 형태는, 아니다, 단지 1 인자가 있어야합니다

  • public static void main (String[])
  • public static void main (String...)

두 번째 옵션은 첫 번째 옵션에 대한 문법 설탕입니다.

이것은 Java 언어 사양으로 설정됩니다

12.1. 자바 가상 머신 시작

Java 가상 머신은 ... 그것을 문자열 배열 인 단일 인수를 전달 일부 지정된 클래스의 메소드 주를 호출하여 실행을 시작

Link

0

이것은 Java가 작동하는 방식이며 Java 설명서에서 설명합니다.

지정되지 않은 서명은 단순히 표준을 준수하지 않으므로 작동하지 않습니다.

java 명령은 Java 응용 프로그램을 시작합니다. JRE (Java Runtime Environment)를 시작하고 지정된 클래스를로드하고 해당 클래스의 main() 메소드를 호출하는 을 호출하여이를 수행합니다. 메서드는 public 으로 선언되어야하며 정적이어야하며 값을 반환하면 안되며 문자열 을 매개 변수로 받아 들여야합니다. 즉, 자바가 작동하는 단지 방법이기 때문에

공공 정적 무효 메인 (문자열 []에 args)

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html