Метод main()
Всякая программа, оформленная как
приложение
(application), должна содержать метод с именем
main
. Он может быть один на все приложение или содержаться в некоторых классах этого приложения, а может находиться и в каждом классе.
Метод
main()
записывается как обычный метод, может содержать любые описания и действия, но он обязательно должен быть открытым (
public
), статическим (
static
), не иметь возвращаемого значения (
void
). Его аргументом обязательно должен быть массив строк (
string[]
). По традиции этот массив называют
args
, хотя имя может быть любым.
Эти особенности возникают из-за того, что метод
main()
вызывается автоматически исполняющей системой Java в самом начале выполнения приложения. При вызове интерпретатора
java
указывается класс, где записан метод
main()
, с которого надо начать выполнение. Поскольку классов с методом
main()
может быть несколько, можно построить приложение с дополнительными точками входа, начиная выполнение приложения в разных ситуациях из различных классов.
Часто метод
main()
заносят в каждый класс с целью отладки. В этом случае в метод
main()
включают тесты для проверки работы всех методов класса.
При вызове интерпретатора
java
можно передать в метод
main()
несколько параметров, которые интерпретатор заносит в массив строк. Эти параметры перечисляются в строке вызова
java
через пробел сразу после имени класса. Если же параметр содержит пробелы, надо заключить его в кавычки. Кавычки не будут включены в параметр, это только ограничители.
Все это легко понять на примере листинга 2.5, в котором записана программа, просто выводящая параметры, передаваемые в метод
main()
при запуске.
Листинг 2.5.
Передача параметров в метод
main()
class Echo {
public static void main(String[] args){
for (int i = 0; i < args.length; i++)
System.out.println("args[" + i +"]="+ args[i]);
}
}
На рис. 2. 4 показаны результаты работы этой программы с разными вариантами задания параметров.
Рис. 2.4.
Вывод параметров командной строки
Как видите, имя класса не входит в число параметров. Оно и так известно в методе
main()
.
Знатокам C/C++
Поскольку в Java имя файла всегда совпадает с именем класса, содержащего метод
main()
, оно не заносится в
args[0]
. Вместо
argc
используется
args. length.
Доступ к переменным среды разрешен не всегда и осуществляется другим способом. Некоторые значения можно просмотреть так:
System.getProperties().list(System.out);.