2016-09-19 4 views
0

나는 java에서 큽니다. 나는 자바와 잘 지내고있다. 문제는 java에서 main 함수를 main (String args)으로 선언 할 때입니다. 나는 bluej와 함께 배우고있다. 그냥 main()이라고 쓰면 괜찮 았어. 두 가지의 차이점은 무엇입니까?main()과 main (String args [])의 차이점

+0

확실히 'String [] args'를 포함하지 않고 선언 할 수 있으며 컴파일이 잘되지만 실행하면 오류가 발생합니다. 주 진입 점에는 해당 서명이 포함되어야합니다. – Orin

+0

"main()"이라고 쓰면 괜찮습니까? 당신의 코드가 * 컴파일되거나 * main() 메소드 안에 코드를 * 실행할 수 있다는 것을 의미합니까? – Pshemo

+0

@pshemo 컴파일시 문제가 없다는 것을 의미합니다. –

답변

3

public static void main(String[] argsjava 도구와 표준 IDE 등이 Java 응용 프로그램의 주 클래스를 찾는 진입 점입니다 (final 일 수 있습니다). 매개 변수 선언 (String[] args)을 포함하지 않으면 서명이 java 도구의 예상과 일치하지 않으므로 작동하지 않을 수 있습니다.

main() 는 그냥 방법이기 때문에 ,를 컴파일하지만, 그 규칙을 다음 java 도구 및 기타 도구를 작동하지 않습니다.

BlueJ에서 매개 변수 선언을 그대로 둘 수 있으면 BlueJ 도구에만 해당되는 동작입니다.

그래서 예를 들어,이 잘 컴파일 :

public class Example { 
    public static void main() { 
     System.out.println("Hi"); 
    } 
} 

그것은 main라는 메소드를 사용하여 Example 클래스에 컴파일합니다. 당신이 java 도구를 통해 것을 실행하려고한다면 :

 
$ java Example 
Error: Main method not found in class Example, please define the main method as: 
    public static void main(String[] args) 
or a JavaFX application class must extend javafx.application.Application 

java 도구와 호환되도록하려면 매개 변수가 필요합니다.

+0

왜 bluej 함께 작동 –

+0

마지막 부분에 감사합니다 Logged –

+1

@AkashJaiswal : "it worked"를 정의해야합니다. 나는 방금 내가 대답에서 중요한 것을 남겨두고 업데이트했다는 것을 깨달았다. 'main()'은 단지 다른 메소드이기 때문에 * 컴파일 할 것이다. main 메소드의 서명에 대한 규칙을 따르는'java' 툴이나 다른 툴에서는 작동하지 않을 것이다. 그래서 "일했다"는 것이 당신이'main' 메소드를 실행했다는 것을 의미한다면, 표준이 아닌 BlueJ입니다. "일했다"면 컴파일 된 것을 의미합니다. 글쎄, 그건 단지 컴파일하는 것입니다. –

관련 문제