(String[] args) oq seria isso nos ()?

3 respostas
edujastre

bom galera, uma amiga veio me pergunta qual a finalidade dessa especificação entre os parenteses, alguém teria algo bem explicativo, pq na real, vejo os códigos, e coloco por que ja está lá.

public static void main(String[] args)

por exemplo, qual a finalidade, usar simplesmente main () não funcionaria?

bom, fica a ai a dúvida, ela tem vergonha de perguntar, falei pra ela que vcs são gente boa, e não chatos igual o pessual do dot.net rs

3 Respostas

peczenyj

significa que o seu programa pode recever um array de parâmetros da ‘linha de comando’.

ex:

java meuPrograma lalala.txt

nesse caso o args[0] seria ‘lalala.txt’

davidbuzatto

E mais um detalhe:

O método main para ser executado tem que ter essa assinatura obrigatoriamente.

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

Você pode ter um método main sem nenhum parâmetro, mas quando tentar executar a classe você vai ver que vai dar erro (NoSuchMethodException) pois a JVM tentou acessa o main com o array de String mas não o encontrou.

Até mais!

R

É isso aí que o David disse. Vou apenas falar com outras palavras, tentando ser mais explicativo:

  1. um método é definido pela sua assinatura, ou seja, o nome do método e a lista de parâmetros (onde o que importa é seus tipos e não seus nomes).

  2. quando vc tenta executar uma classe (seja escrevendo no console “java NomeClasse” ou a partir de alguma IDE ou a partir de um .jar), a JVM procura o método com a seguinte assinatura public static void main(String[] args); ou, a partir do Java 5, public static void main(String… args);

  3. Um detalhe é que o nome do parâmetro não precisa ser args. Poderia ser, por exemplo, public static void main(String[] xxx); ou public static void main(String… xxx); e, ainda assim, a JVM.

  4. Então, vc pode escrever uma classe com o método main da forma que vc falou, retirando o String[] args, ficando assim public static void main(){}, sua classe irá compilar normalmente, mas esse método não servirá como ponto de entrada do programa, ou seja, vc não conseguirá executar essa classe diretamente, pois a JVM não encontrará o método de partida e, como o David falou, será lançada uma exceção em tempo de execução (NoSuchMethodException).

[]'s

Criado 30 de julho de 2007
Ultima resposta 30 de jul. de 2007
Respostas 3
Participantes 4