Programação Orientada a Objetos: Uma Abordagem com Java/Princípios da programação na linguagem Java/Classes Java/O método main

O método mainEditar

Toda classe pode também ter um método main associado, que será utilizado pelo interpretador Java para dar início à execução de uma aplicação. Ao contrário do que acontece em C e C++, onde apenas uma função main deve ser definida para a aplicação como um todo, toda e qualquer classe Java pode ter um método main definido. Apenas no momento da interpretação o main a ser executado é definido através do primeiro argumento (o nome da classe) para o programa interpretador.

O método main é um método associado à classe e não a um objeto específico da classe — assim, ele é definido como um método estático. Adicionalmente, deve ser um método público para permitir sua execução a partir da máquina virtual Java. Não tem valor de retorno, mas recebe como argumento um arranjo de strings que corresponde aos parâmetros que podem ser passados para a aplicação a partir da linha de comando. Essas características determinam a assinatura do método:

public static void main(String[] args)

ou

static public void main(String[] args)

Mesmo que não seja utilizado, o argumento de main (um arranjo de objetos da classe String) deve ser especificado. Por exemplo, a definição da classe Ponto2D poderia ser complementada com a inclusão de um método main para testar sua funcionalidade:

public class Ponto2D { 
    // ... 
    public static void main(String[] args) { 
        Ponto2D ref2 = new Ponto2D();
        Ponto2D p2 = new Ponto2D(1,1);
        System.out.println("Distancia: " + p2.distancia(ref2)); 
    } 
}

O nome do parâmetro (args) obviamente poderia ser diferente, mas deve ser um arranjo de objetos da classe String. Cada elemento desse arranjo corresponde a um argumento passado para o interpretador Java na linha de comando que o invocou. Por exemplo, se a linha de comando for

java Xyz abc 123 def

o método main(String[] args) da classe Xyz vai receber, nessa execução, um arranjo de três elementos na variável args com os seguintes conteúdos:

em args[0]
o objeto String com conteúdo "abc";
em args[1]
o objeto String com conteúdo "123";
em args[2]
o objeto String com conteúdo "def".

Como o retorno do método main é do tipo void, ele não tem valor de retorno. No entanto, assim como programas desenvolvidos em outras linguagens, é preciso algumas vezes obter uma indicação se o programa executou com sucesso ou não. Isto é principalmente útil quando o programa é invocado no contexto de um script do sistema operacional. Em Java, o mecanismo para fornecer essa indicação é o método estático System.exit(int). A invocação desse método provoca o fim imediato da execução do interpretador Java. Tipicamente, o argumento de exit() obedece à convenção de que ’0’ indica execução com sucesso, enquanto um valor diferente de 0 indica a ocorrência de algum problema.