🔥 🚀 Важно для всех, кто работает с Java! 🔥
На JavaRocks ты найдешь уникальные туториалы, практические задачи и редкие книги, которых не найти в свободном доступе. Присоединяйся к нашему Telegram-каналу JavaRocks — стань частью профессионального сообщества!
Что такое метод main() в Java?
Метод java main() является начальной точкой виртуальной машины Java (JVM). Он используется для запуска и инициализации выполнения Java-программы. Метод main(), вероятно, станет первым методом, с которым вы познакомитесь, начиная изучать Java, так как он является обязательной частью любой самостоятельной программы на этом языке. Общий синтаксис метода main следующий:
public static void main(String[] args){
// здесь находится основной код метода main()
}Пример
class NewYear {
public static void main(String... newyearargs) // main() метод
{
System.out.println("Happy New Year 2023");
}
}P.S. Вы можете изменить имя параметра args в методе main() и назвать его как угодно, как показано в примере. Также вместо String[] можно использовать эквивалентную форму String..., которая называется varargs и появилась в Java начиная с версии 5. Это просто другая форма записи массива аргументов командной строки.
Модификаторы метода Java main()
Сигнатура метода main() в Java состоит из четырех обязательных компонентов, три из которых – модификаторы:
public
Модификатор public указывает, что метод доступен из других классов. В случае с main() это особенно важно: модификатор public предоставляет доступ к виртуальной машине Java (JVM) для запуска и выполнения программы. Без модификатора public JVM просто не найдет точку входа в приложение. Если хотите разобраться во всех модификаторах доступа, загляните сюда.
Пример
public class NewYear {
public class NewYear {
// Используем метод main()
static void main(String... newyearargs) { // Определяем метод main() здесь
System.out.println("Happy New Year");
}
}Метод main() не является публичным, и среда выполнения Java (JRE) не может его найти, поэтому при компиляции и запуске возникает следующая ошибка:
Error: Main method not found in class NewYear, please define the `main` method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
static
При запуске Java-программы объект класса, в котором находится main(), еще не создан. Но виртуальной машине Java (JVM) все равно нужно с чего-то начать выполнение. Чтобы вызвать метод main без создания объекта класса, он должен быть помечен как static. Проще говоря, static говорит JVM: «Этот метод можно вызывать сразу, не создавая экземпляр класса».
public class NewYear{
public void main(String... newyearargs){ // Определяем метод main() здесь
System.out.println("Happy New Year");
}
}Run CodeПри компиляции программа успешно соберется, но при запуске возникнет ошибка, потому что метод main не объявлен как static. JVM не может вызвать нестатический метод main без создания объекта класса, а объект на этом этапе еще не создан.
Ошибка будет такой:
Error: Main method is not static in class NewYear, please define the `main` method as:
public static void main(String[] args)
void
В Java каждая функция должна иметь указание на тип возвращаемого значения. Если метод ничего не возвращает, используется тип void. Метод main() не возвращает значение, потому что его задача — запустить программу, а не передавать результат. После выполнения main() программа просто завершает работу, поэтому он всегда объявляется с типом void. Если попытаться вернуть что-то из main() — произойдет ошибка компиляции.
Пример:
public class NewYear{
public static void main(String... newyearargs){ // Определяем метод main() здесь
return 0;
}
}Run CodeОшибка компиляции:
NewYear.java:5: error: incompatible types: unexpected return value
return 0;
^
1 error
main
Имя метода main – это предопределенное имя, которое ищет JVM при запуске программы. Это точка входа, с которой начинается выполнение. Вы можете создать метод с любым другим именем, но он не будет воспринят как main() и не будет вызван при старте программы. Ниже приведена иллюстрация функции main:
public class NewYear{
public static void newMain(String... newyearargs){
System.out.println("Happy New Year");
}
}Run CodeПри компиляции и запуске программы возникает следующая ошибка, поскольку метод main назван неверно.
Вывод:
Error: Main method not found in class NewYear, please define the `main` method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
Чтобы метод main() корректно выполнялся как точка входа, он обязательно должен быть:
public static void main(String[] args)- public – доступен для JVM;
static– вызывается без создания объекта;void– не возвращает значение;main– точка входа по соглашению JVM.
String[] args
Метод main() в Java принимает на вход один параметр – массив строк типа String[]. Этот массив содержит аргументы командной строки, которые могут быть переданы при запуске программы из консоли или командной оболочки.
С помощью этих аргументов можно управлять поведением программы, передавать ей данные или команды.
В следующем примере показана иллюстрация для печати аргументов командной строки.
public class NewYear {
public static void main(String... newyearargs) { // Здесь функция main()
for (String s : newyearargs) {
System.out.println(s);
}
}
}Этот код выводит на экран все аргументы, переданные программе при запуске.
Если вы запускаете программу через командную строку, команда может выглядеть так:
java NewYear 2 0 2 3 "Happy New Year"Вывод:
2 0 2 3
Happy New Year
Каждое значение, разделённое пробелом, становится отдельным элементом массива args (или newyearargs в данном случае).
Если вы используете среду разработки (например, IntelliJ IDEA или Eclipse), аргументы можно указать в настройках конфигурации запуска.
Альтернативная форма записи параметра – String... args – также допустима и выполняет ту же функцию. Внутри метода args будет массив строк в обоих случаях. Но:
String[] args— это строго массив, и вы обязаны передавать его явно (или Java создаёт его сама при запуске);String... args— позволяет удобно передавать любое количество строковых аргументов, не создавая массив вручную.
Заключение
В этой статье мы разобрали метод main() в Java: его назначение, обязательные модификаторы (public, static, void, main), сигнатуру, работу с массивом String[] args, а также типичные ошибки, которые могут возникнуть при его неправильном использовании.
Перевод статьи «Java main() Method».
