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
:
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
:
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:
- javac Test.java
- java Test
OutputError: 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
:
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
:
- javac Test.java
- java Test
OutputError: 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
:
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
:
- javac Test.java
OutputTest.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
:
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:
- javac Test.java
- java Test
OutputError: 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:
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:
- javac Test.java
- java Test 1 2 3 "Testing the main method"
Output1
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.