Dúvida básica na declaração do método main

10 respostas
sinister182

Pessoal eu tenho lido muita coisa sobre java, estudado bastante, corrido átras de tutoriais e artigos mas uma coisa me chamou atenção e não vi uma explicação “clara” do porque isso ocorre…bom vamos a dúvida então:

Muitas vezes eu vejo declararem da seguinte forma:

public static void main (String args [])

Outras vezes vejo assim:

public static void main (String [] args)

Por que as vezes os ( [] ) são colocados após “String” e outras vezes após “args” ?

10 Respostas

douglas_vidotto

É a mesma coisa. Em java a declaração de arrays pode ser tanto assim:

int [] array;

como também

int array[];
sinister182

Hmmm então os ( [] ) são referentes ao “args” certo ? indifere se eu colocar antes ou depois…certo ?

Sei que a dúvida é muito simples mas melhor perguntar do que ficar na dúvida ^^ sem contar que não tinha achado lugar algum que explicasse isso, ainda mais de uma forma tão simples e direta como a sua explicação

M

Os símbolos ‘[’ e ‘]’ indicam que a variável ‘args’ é um array de String.

J

Complementando a explicação, a partir da versão 1.5 do java, também é possível ter declaração do método main da seguinte forma.:

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

esses 3 pontinhus após uma classe, quer dizer que o parâmetro é um vararg.

e args é apenas o nome de uma variável, não precisa ser necessariamente args, pode ser o que você quiser, mas como uma boa prática de programação, usa-se args. :smiley:

[]'s

sinister182

Galera muito obrigado por ter exclarecido minha dúvida de forma tão simples e completa ( com informações adicionais até ^^)

jhonatandarosa obrigado pela sua explicação pois essa forma de declaração eu não conhecia e agora que você falou de vararg fiquei curioso e já chei um link para ver o que é isso

Obrigado a todos =]

dionat4n
Dica de programação

Colocar os colchetes [] junto com o tipo, por exemplo:

String[] str;

e não String str[];

pois [] faz parte do tipo, e não do nome da variável, assim evita-se uma possível confusão.
B

Declaração de arrays são feitas usando o [] antes ou depois do nome da variável.

Em Java isso até gera um pouco de confusão, uma declaração de array de array de int, por exemplo, pode ser:
int [][] param

int param [][]

int [] param []
O último, por incrível que pareça, também é válido.
J

denada cara… varargs é bem legal :smiley:

agora falando especificamente sobre arrays.

não tem o menor problema em vc colocar os colchetes antes ou depois do nome da variável, mas ai vai mais uma dica. :wink:
vamos supor que você queira declarar 3 arrays do tipo int na mesma linha.

se você declarar dessa forma, com os colchetes antes dos nomes das variáveis.

int[] array1, array2, array3;

todas as 3 variáveis serão arrays.
porém, se você declarar depois do nome das variáveis, como por exemplo

int array1, array2, array3[];

apenas a variável array3 será de fato um array do tipo int, as outras duas serão apenas variáveis do tipo int.
para que as três variáveis fossem arrays, usando colchetes após nome das variáveis, deveria ser declarado desta forma.

int array1[], array2[], array3[];

basta ter atenção no que se está fazendo. Mas como uma boa pratica de programação, não recomenda-se declarar da segunda forma, ou da terceira. Se quiser economizar linhas, e declarar várias váriaveis em uma linha só, declare os arrays em uma linha, e as outras em outra linha. Respeite também os tipos, para não acontecer o seguinte:

int[] array1,array2; double[] array3;

:wink:

[]'s

sinister182

Galera muito obrigado mesmo pelas respostas, tiraram todas as minhas dúvidas e muito mais =]

então resumindo… dessa forma (segundo a dica do “dionat4n” e as várias explicações do “jhonatandarosa”) :

public static void main (String [] args) -> seria a forma mais “elegante” ? (mesmo que onde vá os colchetes seja indiferente…)

dionat4n

Eu colocaria os colchetes juntos ao Tipo, senão parece que os colchetes estão perdidos.

Exemplo:
Tipo[] var;

E não:
Tipo [] var;

Muito menos:
Tipo var[];

Curiosidade: não tem nada a respeito de como declarar arrays no Code Conventions do Java.
http://java.sun.com/docs/codeconv/CodeConventions.pdf

Criado 13 de janeiro de 2009
Ultima resposta 13 de jan. de 2009
Respostas 10
Participantes 6