Qual a diferença entra as duas declarações "String nomes[]" e "String[] nomes"?

Observei que na prática nao há nenhuma diferença. Mas alguém saberia me dizer por que escrever de uma forma ou de outra?

e.g.:

[code]String[] nomes1 = { “Nome1”, “Nome2”, “Nome3”, “Nome4”, “Nome5” };
String nomes2[] = { “Nome1”, “Nome2”, “Nome3”, “Nome4”, “Nome5” };

for (String nome : nomes1) {
System.out.println(nome);
}
for (String nome : nomes2) {
System.out.println(nome);
}[/code]

Nenhuma, o Java permite que você declare o array das duas formas.

Acho melhor escrever String [] nomes; acho que fica melhor para quem ver o código entender que estou declarando arrays, naquela linha.

Quando você declara mais de uma variavel na frente assim

String[] nomes1, nomes3, nomes4

Todas essas váriaveis são arrays de string

Já assim

String nomes2[], nomes3, nomes4

Apenas nomes2 é array de string, nomes3 e nomes4 são variaveis “simples” do tipo string.
Para declarar nomes3 e nomes4 como array de string você teria que fazer o seguinte

String nomes2[], nomes3[], nomes4[]

Ok, muito obrigado pelas respostas.

Como dito, não há diferença…
Agora, é uma boa pratica de programação usar as convenções já existentes pelos outros programadores, que, neste caso, é ‘String [] nomes’.

Abrços

não é que não há diferenças, a diferença na verdade está no que o colega furutani disse.

String nomes2[], nomes3, nomes4

Na verdade isso NÃO é uma boa prática, declarar tipo diferentes na mesma linha.

Quando se cria um array, se cria um array de alguma coisa, então a indicação fica mais nítida para leitura quando indicada na própria “tipagem” do array:

int[] idades; String[] nomes;

Outra boa prática é utilizar uma nomenclatura no plural para indicar coleções, seja um array ou uma lista, tudo que contém 1 ou mais elementos.

http://java.sun.com/docs/codeconv/

[quote=rodrigomelo]Observei que na prática nao há nenhuma diferença. Mas alguém saberia me dizer por que escrever de uma forma ou de outra?

e.g.:

String[] nomes1 = { "Nome1", "Nome2", "Nome3", "Nome4", "Nome5" }; String nomes2[] = { "Nome1", "Nome2", "Nome3", "Nome4", "Nome5" };
[/quote]

Nas outras linguagems e em especialmente o C de onde o Java tirou a sua sintaxe utilizam a versão String nome[]
A logica para isso é que a variável é um array e os membros do array são do tipo String.

Mas java é OO e então a sintaxe String[] nome foi introduzida. A logica aqui é que a variável não é um array, é um objeto, e o objeto é que é um Array de elementos String. ( Imagina que aquilo é a forma simplificada de escrever Array nomes )

O java entende a sintaxe do C por motivos de compatibilidade e historicos, mas promove o uso da sua propria sintaxe porque é mais clara. Por detrás dos panos String nomes[] faz o mesmo efeito que String[] nomes.

A forma preferivel, em java, é String[] nomes. Principalmente porque é mais clara.

Pessoal , boa explicação…
mas alguem sabe me dizer qual eh a diferença entre essas linhas d código???

String texto[] = new String[2];
        
        texto[0] = "Ola Mundo";
        texto[1] = new String("Ola Mundo");

estou com duvida nisso!!!

[quote=FelipeGeorge13]Pessoal , boa explicação…
mas alguem sabe me dizer qual eh a diferença entre essas linhas d código???

String texto[] = new String[2];
        
        texto[0] = "Ola Mundo";
        texto[1] = new String("Ola Mundo");

estou com duvida nisso!!![/quote]

A JVM tem uma área especial de memória chamada String pool

Quando eu faço

texto[0] = "Ola Mundo"

eu estou criando um objeto - na string pool - e uma referência pra este objeto

quando eu faço

texto[1] = new String("Ola Mundo");

eu estou criando dois objetos - um na string pool e outra não - e uma referência

A vantagem da string pool é que quando eu estiver no meu código e precisar novamente de uma string Olá Mundo e esta já estiver na string pool eu não irei alocar um outro objeto, mas apenas criar uma referência para a que já exite…

[]´s