public static void main(String args[]) é de comer?
Para quem está começando, acredito que uma das principais coisas que “espanta” (no sentido de correr de medo mesmo) a galera é justamente a sintaxe do método main ser um tanto quanto complexa e estranha.
Mas vamos lá: um primeiro conselho que te dou e sempre digo aos meus alunos:
Considere inicialmente que o método main é apenas um cabeçalho necessário para sua aplicação. Pronto!
Querendo ou não, isso tira de você um peso e uma responsabilidade de saber já de cara de querer entender tuuuuudo o que acontece no cabeçalho. Mas claro que nosso principal objetivo neste artigo não é reduzir a complexidade do cabeçalho a um simples “deixa pra lá”. Vamos entender toda a dinâmica disso.
Vamos olhar com calma o cabeçalho e decompor item a item: public static void main(String args[]){ ... }
Antes de mais nada precisamos entender que o main não é um método chamado de forma explícita, ou seja, na execução do seu programa, você não digita o comando java MinhaClasse.main. Este é um método que a Máquina Virtual Java precisa chamar. Já que é ela quem chama, nada mais justo que a gente seguir a especificação dela. Então vamos lá.
Entendendo cada coisa:
public – o método main precisa ser público, ou seja, a máquina Virtual Java precisa ser capaz de acessá-lo, estando sua classe em qualquer diretório (ou package).
static – o método tem que ser estático, ou seja, uma única ocorrência e livre de instância de classe. O que isso significa? Que a máquina virtual java não precisa instanciar um objeto do tipo da sua classe. Ela simplesmente localiza o método main e o executa (de forma estática).
void – significa que não tem retorno (ou retorno vazio). Ou seja, seu programa, ao contrário de quem está habituado com C ou C++, não retorna nenhum valor para a Máquina Virtual. A VM já monitora a execução do seu programa linha a linha (lembre-se que a JVM é um interpretador dos bytecodes), então não é necessário que seu código retorne nada.
main – claro, o nome do método principal (pela própria tradução de main).
String args[] – aqui vem o grande Calcanhar de Aquiles para a galera que está começando, pois pra quem quiser entender, vai ter que saber sobre vetores e Strings sem nunca ter feito um “Hello World”. Entende agora o porquê de eu sempre dizer aos meus alunos iniciantes para considerar inicialmente como um cabeçalho, apenas?
Então vamos para o parâmetro. Existe uma possibilidade de você invocar seu programa principal passando argumentos de linha de comando, ou seja, quando você digita o comando
java NomeDaSuaClasse
é possível que você também passe parâmetros após o nome da classe, separados por espaços em branco, assim ó:
java NomeDaSuaClasse parametro1 parametro2 abc 123
Esta lista (que lá na main declaramos como args, mas poderia ser qualquer outro nome) contém (todos como Strings) os parâmetros que você passou.
E como acessar estes parâmetros? Através da sua posição no vetor, desse jeito aqui:
java NomeDaSuaClasse parametro1 parametro2 abc 123 args[0] args[1] args[2] args[3]
Pronto! O vetor args,como qualquer outro vetor inicia sempre na posição 0 e vai até a posição args.length-1. Neste caso, nosso tamanho é 4 e as posições variam de 0 a 3. Estes valores já podem ser considerados entrada no seu programa
Lembre-se:
- Se você quiser passar valores numéricos, você deve obrigatoriamente convertê-los (usando Integer.parseInt, Float.parseFloat ou Double.parseDouble).
- Se seu código acessa esse vetor em alguma posição e você, ao executar seu programa não informa nada, será lançada uma exceção do tipo ArrayIndexOutOfBoundsException (índice do Vetor fora dos limites), indicando que você quer acessar uma posição de um vetor que não tem elementos
Consegui te ajudar? Se quiser, compartilhe com seus amigos!
#vamosprogramar