public static void main(String[] args) – Método principal Java

Introdução

O método main em Java é geralmente o primeiro método sobre o qual você aprende quando começa a programar em Java, porque é o ponto de entrada para executar um programa Java. O método main pode conter código para executar ou chamar outros métodos, e pode ser colocado em qualquer classe que faça parte de um programa. Programas mais complexos geralmente têm uma classe que contém apenas o método main. A classe que contém o método main pode ter qualquer nome, embora tipicamente você possa apenas chamar a classe de Main.

Nos exemplos que seguem, a classe que contém o método main é chamada Test:

Test.java
public class Test {

	public static void main(String[] args){

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

Neste artigo você aprenderá o que cada componente do método main significa.

Sintaxe do Método Main em Java

A sintaxe do método main é sempre:

public static void main(String[] args){
	// algum código
}

Você só pode alterar o nome do argumento do array de String. Por exemplo, você pode mudar args para myStringArgs. O argumento do array de String pode ser escrito como String... args ou String args[].

público

O modificador de acesso do método main precisa ser público para que o JRE possa acessar e executar este método. Se um método não é público, então o acesso é restrito. No código de exemplo a seguir, o método main está faltando o modificador de acesso público:

Test.java
public class Test {

	static void main(String[] args){

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

Ao compilar e executar o programa, o seguinte erro ocorre porque o método main não é público e o JRE não consegue encontrá-lo:

  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

estático

Quando o programa Java inicia, não há nenhum objeto da classe presente. O método main precisa ser estático para que a JVM possa carregar a classe na memória e chamar o método main sem criar uma instância da classe primeiro. No código de exemplo a seguir, o método main está faltando o modificador estático:

Test.java
public class Test {

	public void main(String[] args){

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

Ao compilar e executar o programa, o seguinte erro ocorre porque o método main não é estático:

  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

Cada método Java deve fornecer o tipo de retorno. O tipo de retorno do método Java main é void porque ele não retorna nada. Quando o método main termina de executar, o programa Java é encerrado, então não há necessidade de um objeto retornado. No código de exemplo a seguir, o método main tenta retornar algo quando o tipo de retorno é void:

Test.java
public class Test {

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

Quando você compila o programa, o seguinte erro ocorre porque o Java não espera um valor de retorno quando o tipo de retorno é void:

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

main

O método main Java é sempre nomeado main. Quando um programa Java inicia, ele sempre procura pelo método main. O código de exemplo a seguir mostra um método main renomeado para myMain:

Test.java
public class Test {

	public static void myMain(String[] args){

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

Ao compilar e executar o programa, o seguinte erro ocorre porque o JRE não consegue encontrar o método main na classe:

  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

Java método main aceita um único argumento do tipo array de String. Cada string no array é um argumento de linha de comando. Você pode usar argumentos de linha de comando para afetar o funcionamento do programa ou para passar informações para o programa em tempo de execução. O código de exemplo a seguir mostra como imprimir os argumentos de linha de comando que você insere ao executar o programa:

Test.java
public class Test {

	public static void main(String[] args){

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

Ao compilar o programa e depois executá-lo com alguns argumentos de linha de comando separados por espaços, os argumentos são impressos no terminal:

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

Conclusão

Neste artigo, você aprendeu sobre cada componente do método main em Java. Continue aprendendo com mais tutoriais de Java.

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