Main() є початковою точкою для JVM, щоб почати виконання програми Java. Без методу main() JVM не виконає програму. Синтаксис методу main() такий:
громадськість: Це специфікатор доступу. Ми повинні використовувати ключове слово public перед методом main(), щоб JVM могла визначити точку виконання програми. Якщо ми використовуємо private, protected і default перед методом main(), він не буде видимим для JVM.
статичний: Ви можете зробити метод статичним за допомогою ключового слова static. Ми повинні викликати метод main() без створення об’єкта. Статичні методи — це методи, які викликаються без створення об’єктів, тому нам не потрібен об’єкт для виклику методу main().
недійсний: У Java кожен метод має тип повернення. Ключове слово Void підтверджує компілятору, що метод main() не повертає жодного значення.
головний(): Це підпис за замовчуванням, який попередньо визначено в JVM. Він викликається JVM для виконання програми рядок за рядком і завершує виконання після завершення цього методу. Ми також можемо перевантажити метод main().
Рядкові аргументи []: Метод main() також приймає деякі дані від користувача. Він приймає групу рядків, яка називається масивом рядків. Він використовується для зберігання аргументів командного рядка у вигляді рядкових значень.
main(String args[])
Тут agrs[] — це ім’я масиву, і воно має тип String. Це означає, що він може зберігати групу рядків. Пам’ятайте, що цей масив також може зберігати групу чисел, але лише у вигляді рядка. Значення, передані в метод main(), називаються аргументами. Ці аргументи зберігаються в масиві args[], тому для нього зазвичай використовується назва args[].
Що станеться, якщо метод main() записати без String args[]?
Програма скомпілюється, але не запуститься, оскільки JVM не розпізнає метод main(). Пам’ятайте, що JVM завжди шукає метод main() із масивом рядкового типу як параметром.
Процес виконання
Спочатку JVM виконує статичний блок, потім виконує статичні методи, а потім створює об’єкт, потрібний програмі. Нарешті, він виконує методи екземпляра. JVM виконує статичний блок на основі найвищого пріоритету. Це означає, що JVM спочатку переходить до статичного блоку ще до того, як шукає метод main() у програмі.
приклад
class Demo { static //static block { System.out.println('Static block'); } public static void main(String args[]) //static method { System.out.println('Static method'); } }
Вихід:
Static block Static method
Ми спостерігаємо, що JVM спочатку виконує статичний блок, якщо він присутній у програмі. Після цього він шукає метод main(). Якщо метод main() не знайдено, він видає помилку.
приклад
Програма, яка не має методу main(), видає помилку під час виконання.
class DemoStaticBlock { Static //static block { System.out.println('Static block'); } }
Вихід:
Error: Main method not found in the class Demo, 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 і static і записати це так:
static public void main(String args[])
Ми також можемо використати іншу назву для масиву типу String і записати його так:
static public void main(String[] x)
Різні способи написання методу main():
static public void main(String []x) static public void main(String...args)
Рядок...аргументи: Це дозволяє методу приймати нуль або декілька аргументів. Між рядком і масивом повинно бути рівно три крапки; інакше видає помилку.
приклад
Програма, яка не має методу main(), але компілюється та працює успішно.
abstract class DemoNoMain extends javafx.application.Application { static //static block { System.out.println('Java'); System.exit(0); } }
Вихід:
Java
Перевантаження методу main().
Ми також можемо перевантажити метод main(). Ми можемо визначити будь-яку кількість методів main() у класі, але сигнатура методу має бути іншою.
приклад
class OverloadMain { public static void main(int a) //overloaded main method { System.out.println(a); } public static void main(String args[]) { System.out.println('main method incoked'); main(6); } }
Вихід:
подвійний зв'язаний список
main method invoked 6