Как работает метод main в 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:

Добавить комментарий