Recientemente he estado pensando en la diferencia entre las dos formas de definir una matriz:
int[] array
int array[]
¿Hay una diferencia?
Son semánticamente idénticos. La int array[]
sintaxis solo se agregó para ayudar a los programadores de C a acostumbrarse a Java.
int[] array
es preferible y menos confuso.
int array[]
sintaxis. También lógico ... de alguna manera retorcida. :)int array[]
Tiene más sentido para mí. ¿Qué opinas de esta declaración?int[] x, y
? ¿Esy
una matriz o no? Tal vez lo sea, tal vez no lo sea. Solo los gurús de Java pueden responder con confianza ...int[] x, y
,y
es una matriz (porque[]
pertenece al tipo), y en el caso deint x[], y
,y
no es una matriz ([]
pertenece a la variable).Hay una pequeña diferencia, si declara más de una variable en la misma declaración:
Tenga en cuenta que este es un mal estilo de codificación, aunque el compilador seguramente detectará su error en el momento en que intente usarlo
d
.fuente
No hay diferencia.
Prefiero que el
type[] name
formato en está claro que la variable es una matriz (menos mirar alrededor para descubrir qué es).EDITAR:
Oh, espera, hay una diferencia (lo olvidé porque nunca declaro más de una variable a la vez):
fuente
No, estos son lo mismo. sin embargo
es equivalente a:
Tomado de la especificación Java . Eso significa que
son diferentes. No recomendaría ninguna de estas declaraciones múltiples. Más fácil de leer sería (probablemente):
fuente
De la sección 10.2 de la Especificación del lenguaje Java :
Personalmente, casi todo el código Java que he visto utiliza la primera forma, lo que tiene más sentido al mantener toda la información de tipo sobre la variable en un solo lugar. Desearía que se rechazara la segunda forma, para ser honesto ... pero así es la vida ...
Afortunadamente no creo que he nunca visto este código (válida):
fuente
int[] a[];
- eso nunca será claro ;-)Los dos comandos son lo mismo.
Puede usar la sintaxis para declarar varios objetos:
ver: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
fuente
Ninguna diferencia.
Citando de Sun :
fuente
No hay ninguna diferencia entre los dos; ambos declaran una matriz de
int
s. Sin embargo, se prefiere el primero ya que mantiene la información de tipo en un solo lugar. Este último solo es realmente compatible para el beneficio de los programadores de C / C ++ que se trasladan a Java.fuente
No hay diferencia real; sin embargo,
se prefiere ya que indica claramente que el tipo es una matriz.
fuente
Ambos son igualmente válidos. El
int puzzle[]
sin embargo forma se desaconseja, elint[] puzzle
se prefiere de acuerdo con las convenciones de codificación . Consulte también el tutorial oficial de matrices Java :Tenga en cuenta el último párrafo.
Recomiendo leer los tutoriales oficiales de Sun / Oracle en lugar de algunos de terceros. De lo contrario, correría el riesgo de aprender malas prácticas.
fuente
Es una forma alternativa, que se tomó prestada
C
, sobre la cual se basa Java.Como curiosidad, hay tres formas de definir un
main
método válido en Java:public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
fuente
public static void main ( String \u005B \u005D args )
, esta es otra variante también.String... param
, es una matriz, then why it is not possible to call a method like say
someMethod (1, 2) `si se definesomeMethod
comosomeMethod ( int[] numbers )
. Las matrices exigen que el argumento, debe ser de una ubicación de memoria contigua, sin embargovarargs
, primero formará una matriz de los argumentos suministrados. Además, avarargs
solo puede ser el argumento final de un método, aunque lo mismo no es cierto para una matriz.meth(int... a)
puede llamarse comometh(1, 2)
ometh(new int[] {1, 2})
. Varargs es azúcar sintáctico que convierte la primera versión en la segunda versión. El tipo real (bytecode) del parámetro es un tipo de matriz. En cuanto a tener que ser el último, si lo piensas bien, no hay otra opción sensata.No hay diferencia, pero Sun recomienda ponerlo al lado del tipo como se explica aquí
fuente
La opción más preferida es
int[] a
porqueint[]
es el tipo ya
el nombre. (su segunda opción es la misma que esta, con espacio fuera de lugar)Funcionalmente no hay diferencia entre ellos.
fuente
La especificación del lenguaje Java dice:
Por lo tanto, darán como resultado exactamente el mismo código de bytes.
fuente
En Java, estos son simplemente métodos sintácticos diferentes para decir lo mismo.
fuente
Son lo mismo Uno es más legible (para algunos) que el otro.
fuente
Son completamente equivalentes.
int [] array
Es el estilo preferido.int array[]
solo se proporciona como un estilo equivalente compatible con C.fuente
Ambos tienen el mismo significado. Sin embargo, la existencia de estas variantes también permite esto:
que es lo mismo que:
Sin embargo, este es un estilo de codificación horrible y nunca debe hacerse.
fuente
No hay diferencia en la funcionalidad entre ambos estilos de declaración. Ambos declaran matriz de int.
Pero
int[] a
mantiene la información de tipo unida y es más detallada, así que la prefiero.fuente
Son lo mismo, pero hay una diferencia importante entre estas declaraciones:
en 1. regular es solo un int, a diferencia de 2. donde regular y array son matrices de int.
Por lo tanto, se prefiere la segunda declaración que tiene, ya que es más clara. La primera forma también se desaconseja de acuerdo con este tutorial sobre Oracle .
fuente
Como ya se dijo, no hay mucha diferencia (si declara solo una variable por línea).
Tenga en cuenta que SonarQube trata su segundo caso como un olor de código menor :
fuente
Sí, exactamente lo mismo. Personalmente prefiero
porque hace que sea inmediatamente obvio para cualquiera que lea su código que los enteros son una matriz de int, en lugar de
lo que no lo hace tan obvio, especialmente si tiene varias declaraciones en una línea. Pero, de nuevo, son equivalentes, por lo que se reduce a la preferencia personal.
Consulte esta página sobre matrices en Java para obtener ejemplos más detallados.
fuente
Al declarar una referencia de matriz única, no hay mucha diferencia entre ellas. entonces las siguientes dos declaraciones son iguales.
Al declarar múltiples referencias de matriz, podemos encontrar la diferencia entre ellas. Las siguientes dos afirmaciones significan lo mismo. de hecho, depende del programador cuál se sigue. pero se recomienda la notación java estándar.
fuente
Ambos estan bien. Sugiero elegir uno y seguir con él. (Hago el segundo)
fuente
Si bien la
int integers[]
solución se basa en el lenguaje C (y, por lo tanto, puede considerarse el enfoque "normal"), muchas personas encuentranint[] integers
más lógica, ya que no permite crear variables de diferentes tipos (es decir, un int y una matriz) en una declaración (en oposición a la declaración de estilo C).fuente