35 votes

Déclaration de tableau et initialisation en Java. Les tableaux se comportent différemment lorsque la position de leurs index en indice est modifiée dans leur déclaration

Ce qui suit est l'évidence et la gamme habituelle de déclaration et d'initialisation en Java.

int r[], s[];       //<-------
r=new int[10];
s=new int[10];

Très similaire se comporte différemment, lorsque la position de l' [] est changé dans la déclaration de la fonction, comme indiqué ci-dessous.

int []p, q[];       //<-------
p=new int[10];
q=new int[10][10];

Veuillez vous référer à la déclaration. La position de l' [] a été modifié à partir de r[] de []p. Dans ce cas, la matrice q se comporte comme un tableau de tableaux de type int (ce qui est complètement différent du cas précédent).

La question: Pourquoi est - q, dans cette déclaration, int []p, q[]; traitée comme un tableau à deux dimensions?


Informations supplémentaires:

La syntaxe suivante semble bancale.

int []a[];

Cependant, cela est conforme fine et juste se comporte comme int a[][]; ou int [][]a;.

Par conséquent, les cas suivants sont valides.

int [][]e[][][];
int [][][][][]f[][][][];

43voto

Ziyao Wei Points 13591

Regardez JLS sur les Tableaux:

L' [] peut apparaître comme le type au début de la déclaration, ou en tant que partie de la demande de déclaration pour une variable donnée, ou les deux.

et

Les supports sont autorisés dans declarators comme un clin d'œil à la tradition de C et de C++. Les règles générales pour la déclaration de la variable, cependant, permis de crochets à apparaître sur le type et la dans declarators, de sorte que la déclaration de variable locale:

float[][] f[][], g[][][], h[];  // Yechh!

est équivalente à la série de déclarations:

float[][][][] f;
float[][][][][] g;
float[][][] h;

Ainsi, par exemple,

int []p, q[];

est juste

int[] p, q[]

qui est en fait

int p[]; int q[][]

Le reste sont tous semblables.

10voto

bayou.io Points 3680

La façon sensée de déclarer une variable est

 type name
 

Donc, si le type est int[] , nous devrions écrire

 int[] array
 

Ne jamais écrire

 int array[]
 

c'est du charabia (bien que ce soit légal)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X