🔥 🚀 Важно для всех, кто работает с 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».