Как работает метод main в Java
Development, Java | Комментировать запись
main в Java – это обычно первый метод, о котором узнают начинающие, потому что он является точкой входа в программирование на Java. Метод main может содержать код для выполнения или вызова других методов и его можно вложить в любой класс, который является частью программы. Более сложные программы обычно содержат класс, в котором есть только метод main. Название класса, содержащего main, может быть любым, но обычно его называют просто класс Main.
В следующих примерах класс, содержащий метод main, называется Test:
public class Test { public static void main(String[] args){ System.out.println("Hello, World!"); } }
В этом мануале мы разберем, что значит каждая составляющая данного метода.
Синтаксис метода Main
Синтаксис метода всегда выглядит так:
public static void main(String[] args){ // some code }
Изменить здесь можно только название аргумента массива String. Например, вы можете изменить args на myStringArgs. Аргумент массива String может быть записан как String… args или String args[].
Модификатор public
Чтобы JRE могла получить доступ к main методу и выполнить его, модификатором доступа этого метода должен быть public. Если метод не является public, доступ к нему будет ограничен. В следующем примере кода в методе main модификатор доступа public отсутствует:
public class Test { static void main(String[] args){ System.out.println("Hello, World!"); } }
Возникает ошибка при компиляции и запуске программы. Это происходит потому, что метод main не является общедоступным и JRE не может его найти:
javac Test.java
java Test
Error: Main method not found in class Test, please define the `main` method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
Модификатор static
При запуске Java-программы объект класса отсутствует. Чтобы JVM могла загрузить класс в память и вызвать main метод без предварительного создания экземпляра класса, main методу нужен модификатор static. В следующем примере кода в main методе нет модификатора static:
public class Test { public void main(String[] args){ System.out.println("Hello, World!"); } }
Так как метод main не имеет модификатора static, при компиляции и запуске программы возникает следующая ошибка:
javac Test.java
java Test
Error: Main method is not static in class Test, please define the `main` method as: public static void main(String[] args)
Модификатор void
Каждый метод Java должен указывать тип возвращаемого значения. Тип возвращаемого значения main метода в Java — void, поскольку он ничего не возвращает. Когда main метод завершает выполнение, программа Java завершает работу, поэтому в возвращаемом объекте нет необходимости. В следующем примере метод main пытается что-то вернуть при типе возврата void:
public class Test { public static void main(String[] args){ return 0; } }
При компиляции программы возникает ошибка, потому что Java не ожидает возврата значения, когда тип возврата void:
javac Test.java
Test.java:5: error: incompatible types: unexpected return value return 0; ^ 1 error
Метод main
При запуске программа Java всегда ищет метод main. Данный метод может называться только так, его нельзя переименовывать. В следующем примере кода мы для наглядности переименовали main метод в myMain:
public class Test { public static void myMain(String[] args){ System.out.println("Hello, World!"); } }
Во время компиляции и запуска программы возникает ошибка, так как JRE не находит метод main в классе:
javac Test.java
java Test
Error: Main method not found in class Test, please define the `main` method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
Массив String[] args
Main принимает один аргумент массива String. Каждая строка в массиве является аргументом командной строки. Их можно использовать, чтобы влиять на работу программы или передавать в нее информацию во время выполнения. Далее показано, как вывести аргументы командной строки при запуске программы:
public class Test { public static void main(String[] args){ for(String s : args){ System.out.println(s); } } }
Когда скомпилируете программу и потом запустите ее с несколькими аргументами командной строки, разделенными пробелами, аргументы будут выводиться в терминале:
javac Test.java
java Test 1 2 3 “Testing the main method”
1 2 3 Testing the main method
Заключение
В этой статье мы подробно остановились на каждом компоненте метода main в Java.
Читайте также: Как написать свою первую программу на Java
Tags: Java