Перейти к основному содержимому

Объяснение метода Java main()

· 4 мин. чтения

1. Обзор

Каждой программе нужно место для начала ее выполнения; говоря о программах Java, это основной метод.

Мы настолько привыкли писать основной метод во время сеансов кода, что даже не обращаем внимания на его детали. В этой быстрой статье мы проанализируем этот метод и покажем некоторые другие способы его написания.

2. Общая подпись

Наиболее распространенный шаблон основного метода:

public static void main(String[] args) { }

Вот как мы это выучили, так IDE автоматически дополняет код для нас. Но это не единственная форма, которую может принять этот метод, есть несколько допустимых вариантов, которые мы можем использовать, и не каждый разработчик обращает на это внимание.

Прежде чем мы углубимся в эти сигнатуры методов, давайте рассмотрим значение каждого ключевого слова общей сигнатуры:

  • public — модификатор доступа, означающий глобальную видимость
  • статический — к методу можно получить доступ прямо из класса, нам не нужно создавать экземпляр объекта, чтобы иметь ссылку и использовать его
  • void – означает, что этот метод не возвращает значение
  • main — имя метода, это идентификатор, который JVM ищет при выполнении Java-программы.

Что касается параметра args , он представляет значения, полученные методом. Вот как мы передаем аргументы программе при первом ее запуске.

Параметр args представляет собой массив String s. В следующем примере:

java CommonMainMethodSignature foo bar

мы выполняем Java-программу под названием CommonMainMethodSignature и передаем 2 аргумента: foo и bar . Доступ к этим значениям можно получить внутри основного метода как args[0] (со значением foo ) и args[1] (со значением bar ).

В следующем примере мы проверяем аргументы, чтобы решить, следует ли загружать тестовые или рабочие параметры:

public static void main(String[] args) {
if (args.length > 0) {
if (args[0].equals("test")) {
// load test parameters
} else if (args[0].equals("production")) {
// load production parameters
}
}
}

Всегда полезно помнить, что IDE также могут передавать аргументы программе.

3. Различные способы написания метода main()

Давайте проверим несколько различных способов написания основного метода. Хотя они не очень распространены, они являются действительными подписями.

Обратите внимание, что ни один из них не относится к основному методу, их можно использовать с любым методом Java, но они также являются допустимой частью основного метода.

Квадратные скобки можно поставить рядом со строкой , как в общем шаблоне, или рядом с аргументами с обеих сторон:

public static void main(String []args) { }
public static void main(String args[]) { }

Аргументы могут быть представлены как varargs:

public static void main(String...args) { }

Мы даже можем добавить strictfp для метода main() , который используется для совместимости между процессорами при работе со значениями с плавающей запятой:

public strictfp static void main(String[] args) { }

синхронизированный и окончательный также являются допустимыми ключевыми словами для основного метода, но здесь они не будут иметь никакого эффекта.

С другой стороны, final можно применить к аргументам , чтобы предотвратить изменение массива:

public static void main(final String[] args) { }

Чтобы закончить эти примеры, мы также можем написать метод main со всеми вышеперечисленными ключевыми словами (которые, конечно, вы, вероятно, никогда не будете использовать в практическом приложении):

final static synchronized strictfp void main(final String[] args) { }

4. Наличие более одного метода main ()

Мы также можем определить более одного основного метода внутри нашего приложения.

На самом деле, некоторые люди используют его как примитивную технику тестирования для проверки отдельных классов (хотя тестовые фреймворки, такие как JUnit , гораздо больше подходят для этой деятельности).

Чтобы указать, какой основной метод JVM должна выполнять в качестве точки входа нашего приложения, мы используем файл MANIFEST.MF . Внутри манифеста мы можем указать основной класс:

Main-Class: mypackage.ClassWithMainMethod

В основном это используется при создании исполняемого файла .jar . Мы указываем, у какого класса есть основной метод для запуска выполнения, через файл манифеста, расположенный по адресу META-INF/MANIFEST.MF (в кодировке UTF-8).

5. Вывод

В этом руководстве подробно описаны основной метод и некоторые другие формы, которые он может принимать, даже те, которые не очень распространены среди большинства разработчиков.

Имейте в виду, что, хотя все примеры, которые мы показали, правильны с точки зрения синтаксиса, они служат только образовательным целям, и большую часть времени мы будем придерживаться общей подписи для выполнения нашей работы.