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
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.
publicstaticvoidmain(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
RafaelVS
É isso aí que o David disse. Vou apenas falar com outras palavras, tentando ser mais explicativo:
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).
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);
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.
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).