256 votes

Différence entre array int et int tableau]

J’ai récemment pensé à la différence entre les deux façons de définir un tableau :

  1. ``
  2. ``

Y a-t-il une différence ? Je n’ai pas trouvé quoi que ce soit dans mon livre Java expliquant cela pour moi et googler la question n’est pas m’amener tout près.

320voto

skaffman Points 197885

Ils sont sémantiquement identiques. La syntaxe int array[] n'a été ajoutée que pour aider les programmeurs C à s'habituer à Java.

int[] array est beaucoup préférable et moins déroutant.

192voto

Adam Rosenfield Points 176408

Il y a une légère différence si vous déclarez plus d'une variable dans la même déclaration:

 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
 

Notez que c'est un mauvais style de codage, même si le compilateur détectera certainement votre erreur au moment où vous essayez d'utiliser d .

59voto

TofuBeer Points 32441

Il n'y a pas de différence.

Je préfère le format type[] name car il est clair que la variable est un tableau (moins de recherche pour savoir ce que c'est).

MODIFIER:

Oh, attends, il y a une différence (j'ai oublié parce que je ne déclare jamais plus d'une variable à la fois):

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

32voto

Ishtar Points 5751

Non, ce sont les mêmes. toutefois

 byte[] rowvector, colvector, matrix[];
 

est équivalent à:

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

Tiré de la spécification Java . Cela signifie que

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

sont différents. Je ne recommanderais aucune de ces déclarations multiples. Le plus facile à lire serait (probablement) être:

 int[] a;
int[] b;
 

29voto

Jon Skeet Points 692016

De l'article 10.2 de la Java Language Specification:

[] 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, comme dans cet exemple:

 byte[] rowvector, colvector, matrix[];

Cette déclaration est équivalent à:

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

Personnellement presque tout le code Java que j'ai jamais vu utilise la première forme, qui fait plus de sens en gardant toutes les informations de type de la variable en un seul endroit. Je souhaite que la deuxième forme ont été refusées, pour être honnête... mais telle est la vie...

Heureusement, je ne pense pas que j'ai jamais vu ça (valide) code:

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

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