Método Java main () explicado

Método Java main () explicado

1. Visão geral

Todo programa precisa de um local para iniciar sua execução; falando sobre programas Java, esse é o métodomain.

Estamos tão acostumados a escrever o métodomain durante nossas sessões de código que nem prestamos atenção aos detalhes. Neste artigo rápido, vamos analisar esse método e mostrar algumas outras maneiras de escrevê-lo.

2. Assinatura Comum

O modelo do método principal mais comum é:

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

É assim que aprendemos, é assim que o IDE preenche automaticamente o código para nós. Mas essa não é a única forma que esse método pode assumir,there are some valid variants we can usee nem todo desenvolvedor presta atenção a esse fato.

Antes de mergulharmos nessas assinaturas de método, vamos revisar o significado de cada palavra-chave da assinatura comum:

  • public - modificador de acesso, significando visibilidade global

  • static - o método pode ser acessado direto da classe, não temos que instanciar um objeto para ter uma referência e usá-lo

  • void - significa que este método não retorna um valor

  • main - o nome do método, que é o identificador que a JVM procura ao executar um programa Java

Já o parâmetroargs representa os valores recebidos pelo método. É assim que passamos argumentos para o programa quando o iniciamos.

O parâmetroargs é uma matriz deStrings. No exemplo a seguir:

java CommonMainMethodSignature foo bar

estamos executando um programa Java chamadoCommonMainMethodSignaturee passando 2 argumentos:fooebar. Esses valores podem ser acessados ​​dentro do métodomain comoargs[0] (tendofoo como valor) eargs[1] (tendobar como valor).

No próximo exemplo, estamos verificando argumentos para decidir se carregaremos os parâmetros de teste ou produção:

public static void main(String[] args) {
    if (args.length > 0) {
        if (args[0].equals("test")) {
            // load test parameters
        } else if (args[0].equals("production")) {
            // load production parameters
        }
    }
}

É sempre bom lembrar que IDEs também podem passar argumentos para o programa.

3. Diferentes maneiras de escrever um métodomain()

Vamos verificar algumas maneiras diferentes de escrever o métodomain. Embora não sejam muito comuns, são assinaturas válidas.

Observe que nenhum deles é específico para o métodomain, eles podem ser usados ​​com qualquer método Java, mas também são uma parte válida do métodomain.

Os colchetes podem ser colocados perto deString, como no modelo comum, ou perto deargs em ambos os lados:

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

Os argumentos podem ser representados como varargs:

public static void main(String...args) { }

Podemos até adicionarstrictfp para o métodomain(), que é usado para compatibilidade entre processadores ao trabalhar com valores de ponto flutuante:

public strictfp static void main(String[] args) { }

synchronized efinal também são palavras-chave válidas para o métodomain, mas não terão efeito aqui.

Por outro lado,final pode ser aplicado emargs para evitar que a matriz seja modificada:

public static void main(final String[] args) { }

Para encerrar esses exemplos, também podemos escrever o métodomain com todas as palavras-chave acima (que, é claro, você provavelmente nunca usará em uma aplicação prática):

final static synchronized strictfp void main(final String[] args) { }

4. Tendo mais de um métodomain()

Também podemos definirmore than one main method inside our application.

Na verdade, algumas pessoas o usam como uma técnica de teste primitiva para validar classes individuais (embora frameworks de teste comoJUnit sejam muito mais indicados para esta atividade).

Para especificar qual métodomain a JVM deve executar como o ponto de entrada de nosso aplicativo, usamos o arquivoMANIFEST.MF. Dentro do manifesto, podemos indicar a classe principal:

Main-Class: mypackage.ClassWithMainMethod

Isso é usado principalmente ao criar um arquivo executável.jar. Indicamos qual classe possui o métodomain para iniciar a execução, através do arquivo de manifesto localizado emMETA-INF/MANIFEST.MF (codificado em UTF-8).

5. Conclusão

Este tutorial descreveu os detalhes do métodomain e algumas outras formas que ele pode assumir, mesmo aquelas que não são muito comuns para a maioria dos desenvolvedores.

Lembre-se de quealthough all the examples that we’ve shown are valid in terms of syntax, they just serve the educational purposee na maioria das vezes ficaremos com a assinatura comum para fazer nosso trabalho.