Recentemente, estive pensando sobre a diferença entre as duas maneiras de definir uma matriz:
int[] array
int array[]
Existe alguma diferença?
Eles são semanticamente idênticos. A int array[]
sintaxe foi adicionada apenas para ajudar os programadores C a se acostumarem ao java.
int[] array
é muito preferível e menos confuso.
int array[]
sintaxe. Também lógico ... de alguma maneira distorcida. :)int array[]
faz mais sentido para mim. O que você acha dessa declaração?int[] x, y
? Éy
uma matriz ou não? Talvez seja, talvez não seja. Gurus única do Java pode responder com confiança ....int[] x, y
,y
é uma matriz (porque[]
pertence ao tipo) e, no caso deint x[], y
,y
não é uma matriz ([]
pertence à variável).Há uma pequena diferença, se você declarar mais de uma variável na mesma declaração:
Observe que este é um estilo de codificação ruim, embora o compilador quase certamente capte seu erro no momento em que você tentar usar
d
.fonte
Não há diferença.
Eu prefiro o
type[] name
formato em é claro que a variável é uma matriz (menos olhando ao redor para descobrir o que é).EDITAR:
Oh, espere, há uma diferença (eu esqueci porque nunca declaro mais de uma variável por vez):
fonte
Não, são os mesmos. Contudo
é equivalente a:
Retirado da especificação Java . Isso significa que
são diferentes. Eu não recomendaria nenhuma dessas múltiplas declarações. A leitura mais fácil (provavelmente) seria:
fonte
Na seção 10.2 da especificação da linguagem Java :
Pessoalmente, quase todo o código Java que eu já vi usa a primeira forma, o que faz mais sentido, mantendo todas as informações de tipo sobre a variável em um só lugar. Eu gostaria que a segunda forma não fosse permitida, para ser honesto ... mas tal é a vida ...
Felizmente, acho que nunca vi esse código (válido):
fonte
int[] a[];
- isso nunca ficará claro ;-)Os dois comandos são a mesma coisa.
Você pode usar a sintaxe para declarar vários objetos:
consulte: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
fonte
Não faz diferença.
Citações da Sun :
fonte
Não há diferença entre os dois; ambos declaram uma matriz de
int
s. No entanto, o primeiro é preferido, pois mantém as informações de tipo em um só lugar. O último só é realmente suportado em benefício dos programadores de C / C ++ que se mudam para Java.fonte
Não há diferença real; Contudo,
é preferido, pois indica claramente que o tipo é uma matriz.
fonte
Ambos são igualmente válidos. A
int puzzle[]
forma é, contudo, desencorajados, aint[] puzzle
é o preferido de acordo com as convenções de codificação . Veja também o tutorial oficial sobre matrizes Java :Observe o último parágrafo.
Eu recomendo a leitura dos tutoriais oficiais da Sun / Oracle em vez de alguns de terceiros. Caso contrário, você correria o risco de aprender más práticas.
fonte
É uma forma alternativa, que foi emprestada de
C
, no qual o java é baseado.Como curiosidade, existem três maneiras de definir um
main
método válido em java:public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
fonte
public static void main ( String \u005B \u005D args )
, essa também é outra variante.String... param
, é uma matriz, then why it is not possible to call a method like say
someMethod (1, 2) `se alguém estiver definindosomeMethod
comosomeMethod ( int[] numbers )
. As matrizes exigem que o argumento deva ser do local contíguo da memória, porémvarargs
, criarão uma matriz com os argumentos fornecidos primeiro. Além disso, avarargs
pode ser apenas o argumento final de um método, embora o mesmo não seja verdadeiro para uma matriz.meth(int... a)
pode ser chamado comometh(1, 2)
oumeth(new int[] {1, 2})
. Varargs é o açúcar sintático que transforma a primeira versão na segunda. O tipo real (bytecode) do parâmetro é um tipo de matriz. Quanto a ter que ser o último, se você pensar bem, não há outra escolha sensata.Não há diferença, mas a Sun recomenda colocá-lo ao lado do tipo, conforme explicado aqui
fonte
A opção mais preferida é
int[] a
- porqueint[]
é o tipo ea
é o nome. (sua segunda opção é a mesma, com espaço extraviado)Funcionalmente, não há diferença entre eles.
fonte
A especificação da linguagem Java diz:
Assim, eles resultarão exatamente no mesmo código de bytes.
fonte
Em Java, esses são simplesmente métodos sintáticos diferentes de dizer a mesma coisa.
fonte
Eles são iguais. Um é mais legível (para alguns) que o outro.
fonte
Eles são completamente equivalentes.
int [] array
é o estilo preferido.int array[]
é fornecido apenas como um estilo compatível com C equivalente.fonte
Ambos têm o mesmo significado. No entanto, a existência dessas variantes também permite isso:
que é o mesmo que:
No entanto, esse é um estilo de codificação horrível e nunca deve ser feito.
fonte
Não há diferença na funcionalidade entre os dois estilos de declaração. Ambos declaram matriz de int.
Mas
int[] a
mantém as informações de tipo juntas e é mais detalhada, então eu prefiro.fonte
Eles são os mesmos, mas há uma diferença importante entre estas declarações:
em 1. regular é apenas um int, em oposição a 2. onde regular e array são matrizes de int.
A segunda afirmação que você possui é, portanto, preferida, pois é mais clara. O primeiro formulário também é desencorajado de acordo com este tutorial no Oracle .
fonte
Como já foi dito, não há muita diferença (se você declarar apenas uma variável por linha).
Observe que o SonarQube trata seu segundo caso como um pequeno cheiro de código:
fonte
Sim, exatamente o mesmo. Pessoalmente, eu prefiro
porque torna imediatamente óbvio para quem lê seu código que números inteiros são uma matriz de int's, em oposição a
o que não torna tudo tão óbvio, principalmente se você tiver várias declarações em uma linha. Mas, novamente, eles são equivalentes, então tudo se resume à preferência pessoal.
Confira esta página em matrizes em Java para obter exemplos mais detalhados.
fonte
ao declarar uma única referência de matriz, não há muita diferença entre elas. portanto, as duas declarações a seguir são iguais.
ao declarar várias referências de matriz, podemos encontrar diferença entre elas. as duas declarações a seguir significam o mesmo. de fato, cabe ao programador qual deles seguir. mas a notação java padrão é recomendada.
fonte
Ambos estão bem. Sugiro escolher um e ficar com ele. (Eu faço o segundo)
fonte
Embora a
int integers[]
solução tenha raízes na linguagem C (e, portanto, possa ser considerada a abordagem "normal"), muitas pessoas achamint[] integers
mais lógico, pois não permite criar variáveis de tipos diferentes (por exemplo, int e array) em uma declaração (em oposição a a declaração de estilo C).fonte