От Java Language Specification 12.1.4
метод main
должен быть объявлен public
, static
и void
. Он должен указать формальный параметр (§8.4.1), объявленным типом которого является массив из String
. Таким образом, одно из следующих заявлений приемлемо:
public static void main(String[] args)
public static void main(String... args)
(обратите внимание, что вы не можете иметь два main
методы с String[]
и String...
в одном классе, так как varargs просто синтаксический сахар, который во время компиляции будет заменен массивами, поэтому вы получите два метода передачи String[]
, а один класс не может иметь два метода с одинаковыми именами и параметрами)
Итак, когда вы выполняете команду как
java YourClass foo bar
виртуальной машины Java поместит foo
и bar
параметры String[]
массива и попытается передать этот массив main
метод, который может принять его в качестве параметра.
Этот метод также используется, когда команда не имеет аргументов, как
java YourType
Это решение упрощает нашу жизнь, потому что мы не должны сосредоточиться на рассмотрении дел, где есть две точки входа
- один для команды с аргументами
- и тот, где команда не имеет аргументов.
Мы можем просто разрешить пользователю передавать аргументы, но если мы не будем обрабатывать их, мы можем просто игнорировать их.
Также помните, что нам разрешено иметь в нашем классе любой метод, который имеет надлежащее объявление (и не нарушает каких-либо правил, унаследованных от суперкласса, например, расширяя видимость элементов), поэтому мы не можем сделать защищенный метод общедоступным), поэтому существует ничего плохого в том,
public static void main(){
/*your code*/
}
Но вы должны понимать, что этот метод не может быть использован в качестве точки входа, так что если вы хотите, чтобы запустить приложение из этого метода вам необходимо будет создать надлежащий main
метод, который будет выполнять вашmain()
метод:
public static void main(String ...){
main();
}
Проверить [он re] (http://stackoverflow.com/questions/890966/what-is-string-args-parameter-in-main-method-java) – sam
Ключевое слово применимо к методу. –
Обратите внимание, что вы также можете написать 'String ... args' –