objects length dinamico arreglos array java arrays

length - java array string



Diferencia entre la matriz int[] y la matriz int (25)

Al declarar una única referencia de matriz, no hay mucha diferencia entre ellos. así que las siguientes dos declaraciones son iguales.

int a[]; // comfortable to programmers who migrated from C/C++ int[] a; // standard java notation

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 es el siguiente. pero se recomienda la notación java estándar.

int a[],b[],c[]; // three array references int[] a,b,c; // three array references

Recientemente he estado pensando en la diferencia entre las dos formas de definir una matriz:

  1. int[] array
  2. int array[]

¿Hay una diferencia?


Ambos estan bien. Sugiero elegir uno y seguir con él. (Hago el segundo)


Ambos son igualmente válidos. Sin embargo, la forma int puzzle[] no se recomienda, se prefiere el int[] puzzle acuerdo con las convenciones de codificación . Vea también el tutorial oficial de arreglos de Java :

Del mismo modo, puede declarar matrices de otros tipos:

byte[] anArrayOfBytes; short[] anArrayOfShorts; long[] anArrayOfLongs; float[] anArrayOfFloats; double[] anArrayOfDoubles; boolean[] anArrayOfBooleans; char[] anArrayOfChars; String[] anArrayOfStrings;

También puede colocar los corchetes después del nombre de la matriz:

float anArrayOfFloats[]; // this form is discouraged

Sin embargo, la convención desalienta esta forma; los corchetes identifican el tipo de matriz y deben aparecer con la designación de tipo.

Tenga en cuenta el último párrafo.

Recomiendo leer los tutoriales oficiales de Sun / Oracle en lugar de algunos de terceros. De lo contrario, se arriesgaría a terminar aprendiendo malas prácticas.


Ambos tienen el mismo significado. Sin embargo, la existencia de estas variantes también permite esto:

int[] a, b[];

que es lo mismo que

int[] a; int[][] b;

Sin embargo, este es un estilo de codificación horrible y nunca debe hacerse.


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 :

Los designadores de la matriz "[]" deben estar en el tipo, no en la variable (calamar: S1197)

Los designadores de arrays siempre deben estar ubicados en el tipo para una mejor legibilidad del código. De lo contrario, los desarrolladores deben mirar tanto el tipo como el nombre de la variable para saber si una variable es una matriz o no.

Ejemplo de código no compatible

int matrix[][]; // Noncompliant int[] matrix[]; // Noncompliant

Solución compatible

int[][] matrix; // Compliant


De la sección 10.2 de la especificación del lenguaje Java :

El [] puede aparecer como parte del tipo al principio de la declaración, o como parte del declarador para una variable en particular, o ambos, como en este ejemplo:

byte[] rowvector, colvector, matrix[];

Esta declaración es equivalente a:

byte rowvector[], colvector[], matrix[][];

Personalmente, casi todo el código Java que he visto utiliza el primer formulario, lo que tiene más sentido al mantener toda la información de tipo sobre la variable en un solo lugar. Desearía que la segunda forma fuera rechazada, para ser honesta ... pero así es la vida ...

Afortunadamente, no creo que haya visto este código (válido):

String[] rectangular[] = new String[10][10];


En Java, estos son simplemente métodos sintácticos diferentes para decir lo mismo.


Es una forma alternativa, que fue tomada de C , en la que se basa Java.

Como curiosidad, hay tres formas de definir un método main válido en java:

  • public static void main(String[] args)
  • public static void main(String args[])
  • public static void main(String... args)

Hay una ligera diferencia, si sucede que declara más de una variable en la misma declaración:

int[] a, b; // Both a and b are arrays of type int int c[], d; // WARNING: c is an array, but d is just a regular int

Tenga en cuenta que este es un estilo de codificación incorrecto, aunque el compilador casi seguramente detectará su error en el momento en que intente usar d .


La http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html dice:

The [] may appear as part of the type at the beginning of the declaration, or as part of the declarator for a particular variable, or both, as in this example: byte[] rowvector, colvector, matrix[]; This declaration is equivalent to: byte rowvector[], colvector[], matrix[][];

Por lo tanto, darán como resultado exactamente el mismo código de bytes.


La opción más preferida es int[] a - porque int[] es el tipo y a es el nombre. (Su segunda opción es la misma que esta, con espacio fuera de lugar)

Funcionalmente no hay diferencia entre ellos.



No hay diferencia en la funcionalidad entre ambos estilos de declaración. Ambos declaran array de int.

Pero int[] a mantiene la información de tipo unida y es más detallada, así que la prefiero.


No hay diferencia real; sin embargo,

double[] items = new double[10];

Se prefiere, ya que indica claramente que el tipo es una matriz.


No hay diferencia, pero Sun recomienda ponerlo al lado del tipo como se explica here


No hay diferencia.

Prefiero que el formato de type[] name en esté claro que la variable es una matriz (menos mirando alrededor para averiguar qué es).

EDITAR:

Oh, espera, hay una diferencia (lo olvidé porque nunca declaro más de una variable a la vez):

int[] foo, bar; // both are arrays int foo[], bar; // foo is an array, bar is an int.


No hay ninguna diferencia entre los dos; Ambos declaran una serie 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 en beneficio de los programadores de C / C ++ que se mueven a Java.


No, estos son los mismos. sin embargo

byte[] rowvector, colvector, matrix[];

es equivalente a:

byte rowvector[], colvector[], matrix[][];

Tomado de la especificación de Java . Eso significa que

int a[],b; int[] a,b;

son diferentes. No recomendaría ninguna de estas múltiples declaraciones. Más fácil de leer sería (probablemente):

int[] a; int[] b;


Sí, exactamente lo mismo. Personalmente prefiero

int[] integers;

porque hace que sea inmediatamente obvio para cualquiera que lea su código que los enteros es una matriz de int, a diferencia de

int integers[];

lo que no lo hace tan obvio, especialmente si tiene varias declaraciones en una línea. Pero una vez más, son equivalentes, por lo que se trata de preferencias personales.

Echa un vistazo a http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html para ver ejemplos más detallados.


Si bien la solución int integers[] se basa en el lenguaje C (y, por lo tanto, puede considerarse el enfoque "normal"), muchas personas encuentran que los int[] integers más lógicos, ya que no permite crear variables de diferentes tipos (es decir, un int y una matriz ) en una declaración (a diferencia de la declaración de estilo C).


Son completamente equivalentes. int [] array es el estilo preferido. int array[] solo se proporciona como un estilo equivalente, compatible con C.


Son lo mismo, pero hay una diferencia importante entre estas afirmaciones:

// 1. int regular, array[]; // 2. int[] regular, array;

en 1. regular es solo un int, a diferencia de 2. donde tanto regular como array son matrices de int.

Por lo tanto, se prefiere la segunda declaración que tiene, ya que es más clara. El primer formulario también se desaconseja de acuerdo con este tutorial en Oracle .


Son lo mismo. Uno es más legible (para algunos) que el otro.


Son semánticamente idénticos. La sintaxis int array[] solo se agregó para ayudar a los programadores de C a acostumbrarse a Java.

int[] array es mucho más preferible y menos confuso.


Ninguna diferencia.

Citando desde el http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html :

El [] puede aparecer como parte del tipo al principio de la declaración, o como parte del declarador para una variable en particular, o ambos, como en este ejemplo: byte[] rowvector, colvector, matrix[];

Esta declaración es equivalente a: byte rowvector[], colvector[], matrix[][];