public static void main(String[] args) – Главный метод Java

Введение

Метод main на языке Java обычно является первым методом, который вы изучаете, начиная программировать на Java, потому что это точка входа для выполнения программы на Java. Метод main может содержать код для выполнения или вызова других методов, и его можно разместить в любом классе, который является частью программы. Более сложные программы обычно имеют класс, содержащий только метод main. Класс, содержащий метод main, может иметь любое имя, хотя обычно его называют просто Main.

В приведенных далее примерах класс, содержащий метод main, называется Test:

Test.java
public class Test {

	public static void main(String[] args){

		System.out.println("Hello, World!");
	
	}
}

В этой статье вы узнаете, что означает каждый компонент метода main.

Синтаксис метода main в Java

Синтаксис метода main всегда следующий:

public static void main(String[] args){
	// какой-то код
}

Вы можете изменить только имя аргумента массива String. Например, вы можете изменить args на myStringArgs. Аргумент массива String можно записать как String... args или String args[].

public

Модификатор доступа метода main должен быть public, чтобы JRE мог получить доступ к этому методу и выполнить его. Если метод не является общедоступным, доступ к нему ограничен. В следующем примере кода метод main не имеет модификатора доступа public:

Test.java
public class Test {

	static void main(String[] args){

		System.out.println("Hello, World!");
	
	}
}

При компиляции и запуске программы возникает следующая ошибка, потому что метод main не является общедоступным, и JRE не может его найти:

  1. javac Test.java
  2. java Test
Output
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 запускается, объект класса отсутствует. Метод main должен быть объявлен как static, чтобы JVM мог загрузить класс в память и вызвать метод main без создания экземпляра класса. В следующем примере кода метод main не имеет модификатора static:

Test.java
public class Test {

	public void main(String[] args){

		System.out.println("Hello, World!");
	
	}
}

При компиляции и запуске программы возникает следующая ошибка, потому что метод main не является static:

  1. javac Test.java
  2. java Test
Output
Error: Main method is not static in class Test, please define the `main` method as: public static void main(String[] args)

void

Каждый метод Java должен предоставлять тип возвращаемого значения. Тип возвращаемого значения метода Java mainvoid, потому что он ничего не возвращает. Когда метод main завершает выполнение, программа Java завершает свою работу, поэтому нет необходимости в возвращаемом объекте. В следующем примере кода метод main пытается вернуть что-то, когда тип возвращаемого значения – void:

Test.java
public class Test {

	public static void main(String[] args){
	
		return 0;
	}
}

При компиляции программы возникает следующая ошибка, потому что Java не ожидает возвращаемого значения, когда тип возвращаемого значения – void:

  1. javac Test.java
Output
Test.java:5: error: incompatible types: unexpected return value return 0; ^ 1 error

main

Метод main в Java всегда именуется main. Когда программа на Java запускается, она всегда ищет метод main. Следующий пример кода показывает метод main, переименованный в myMain:

Test.java
public class Test {

	public static void myMain(String[] args){

		System.out.println("Hello, World!");
	}
}

При компиляции и запуске программы возникает следующая ошибка, потому что JRE не может найти метод main в классе:

  1. javac Test.java
  2. java Test
Output
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 в Java принимает единственный аргумент типа массива String. Каждая строка в массиве представляет собой аргумент командной строки. Вы можете использовать аргументы командной строки для воздействия на работу программы или передачи информации в программу во время выполнения. В следующем примере кода показано, как вывести аргументы командной строки, которые вы вводите при запуске программы:

Test.java
public class Test {

	public static void main(String[] args){

    	for(String s : args){
		System.out.println(s);
    	}
	
    }
}

Когда вы компилируете программу, а затем запускаете ее с несколькими аргументами командной строки, разделенными пробелами, аргументы выводятся в терминал:

  1. javac Test.java
  2. java Test 1 2 3 "Testing the main method"
Output
1 2 3 Testing the main method

Вывод

В этой статье вы узнали о каждом компоненте метода main в Java. Продолжайте изучение с более подробными учебными материалами по Java.

Source:
https://www.digitalocean.com/community/tutorials/public-static-void-main-string-args-java-main-method