standard - Convención de arreglos de Java: String[] args vs. String args
java standard programming (4)
Esto no es de Oracle, pero creo que ayudará.
Es del libro de Kathy Sierra SCJP Sun Certified Programmer para Java 6
int[] key;
int key [];
Al declarar una referencia de matriz, siempre debe colocar los corchetes de matriz inmediatamente después del tipo declarado, en lugar de después del identificador (nombre de variable). De esa manera, cualquiera que lea el código puede decir fácilmente que, por ejemplo, la clave es una referencia a un objeto de matriz int, y no una primitiva int.
Actualmente estoy enseñando a estudiantes como tutor de convenciones de programación. Les he dicho que pueden encontrar la mayoría de las convenciones en las Convenciones del Código de Oracle .
En mi último tutorial un estudiante preguntó si:
public static void main(String args[])
o
public static void main(String[] args)
Está escrito por convención o si hay alguna diferencia. Nunca había visto la primera versión, así que estoy seguro de que la segunda es una convención. Pero no tengo una fuente para eso.
¿Puedes darme una fuente (preferiblemente de oracle, como la página que he enlazado arriba) que aclara cuál de las dos es una convención?
Equivalencia de ambas expresiones.
Sé que ambas expresiones son equivalentes:
El JLS 7 , p. 292 estados:
An array type is written as the name of an element type followed
by some number of empty pairs of square brackets [].
pero también en la p. 293:
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.
For example:
byte[] rowvector, colvector, matrix[];
This declaration is equivalent to:
byte rowvector[], colvector[], matrix[][];
Pero esto no ayuda para la convención.
Así que son idénticos (no especificaciones, pero aquí hay una source ). Producen el mismo bytecode en un pequeño ejemplo, así que estoy muy seguro de que también son idénticos en la praxis.
Hay un caso de uso oscuro para los corchetes finales:
int x, xs[], xxs[][];
Cuánto es útil esto, dejo que el lector sea el juez.
Una de las ventajas de usar [] inmediatamente después del tipo de matriz es: si desea declarar múltiples matrices, debe escribir como: int [] a, b, c; Pero si usa [] después del nombre del arreglo, entonces tenemos que usar [] después de cada variable del arreglo como: int a [], b [], c [];
Las Convenciones de Código de Oracle no lo establecen explícitamente, pero en todos los ejemplos usan los corchetes inmediatamente después del tipo declarado.
En su código de ejemplo (que debe considerarse autoritario en este contexto) usan:
private Object[] instanceVar3;
También en la página que detalla la inicialización de las variables, tienen este ejemplo que demuestra los posibles problemas de colocar los corchetes detrás del nombre de la variable:
int foo, fooarray[]; //WRONG!
Uno podría sentirse tentado a hacer esto y pensar que uno estaba declarando varios arreglos. Aunque esto es sintácticamente correcto (como lo señaló el brimborium en los comentarios), Oracle no puso las letras mayúsculas allí para nada. Es mejor estar seguro, claro y también escribir menos colocando los corchetes detrás del tipo para mostrar claramente lo que desea declarar.