Java main() Method

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх