J'ai récemment réfléchi à la différence entre les deux manières de définir un tableau:
int[] array
int array[]
Y a-t-il une différence?
Ils sont sémantiquement identiques. Le int array[]
La syntaxe n'a été ajoutée que pour aider les programmeurs C à s'habituer à Java.
int[] array
est de loin préférable et moins déroutant.
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 va certainement capter votre erreur au moment où vous essayez d'utiliser d
.
Il n'y a pas de différence.
Je préfère le type[] name
Le format en est il est clair que la variable est un tableau (moins de regarder autour de savoir ce que c'est).
MODIFIER:
Oh attendez 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.
Non, ce sont les mêmes. toutefois
byte[] rowvector, colvector, matrix[];
est équivalent à:
byte rowvector[], colvector[], matrix[][];
Tiré de 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):
int[] a;
int[] b;
Le [] peut apparaître en tant que partie du type au début de la déclaration, ou en tant que partie du déclarant pour une variable particulière, ou les deux, comme dans cet exemple:
byte[] rowvector, colvector, matrix[];
Cette déclaration est équivalente à:
byte rowvector[], colvector[], matrix[][];
Personnellement, presque tout le code Java que j'ai jamais vu utilise le premier formulaire, ce qui est plus logique en conservant tout les informations de type sur la variable dans un endroit. Je souhaite que la deuxième forme soit rejetée, pour être honnête ... mais telle est la vie ...
Heureusement, je ne pense pas avoir jamais vu ce code (valide):
String[] rectangular[] = new String[10][10];
Les deux commandes sont la même chose.
Vous pouvez utiliser la syntaxe pour déclarer plusieurs objets:
int[] arrayOne, arrayTwo; //both arrays
int arrayOne[], intOne; //one array one int
voir: http://Java.Sun.com/docs/books/jls/second_edition/html/arrays.doc.html
Aucune différence.
Citant de Sun :
Le
[]
peut apparaître en tant que partie du type au début de la déclaration, ou en tant que partie du déclarant pour une variable particulière, ou les deux, comme dans cet exemple:byte[] rowvector, colvector, matrix[];
Cette déclaration est équivalente à:
byte rowvector[], colvector[], matrix[][];
Il n'y a pas de différence entre les deux. les deux déclarent un tableau de int
s. Cependant, le premier est préférable car il conserve les informations de type au même endroit. Ce dernier n’est réellement pris en charge que pour le bénéfice des programmeurs C/C++ qui passent à Java.
Il n'y a pas de réelle différence. cependant,
double[] items = new double[10];
est préférable car il indique clairement que le type est un tableau.
Les deux sont également valables. Le int puzzle[]
La forme est cependant découragée, la int[] puzzle
est préféré selon le conventions de codage . Voir aussi le fonctionnaire tutoriel sur les tableaux Java :
De même, vous pouvez déclarer des tableaux d'autres types:
byte[] anArrayOfBytes; short[] anArrayOfShorts; long[] anArrayOfLongs; float[] anArrayOfFloats; double[] anArrayOfDoubles; boolean[] anArrayOfBooleans; char[] anArrayOfChars; String[] anArrayOfStrings;
Vous pouvez également placer les crochets après le nom du tableau:
float anArrayOfFloats[]; // this form is discouraged
Cependant, la convention décourage cette forme; les crochets identifient le type de tableau et doivent apparaître avec la désignation du type.
Notez le dernier paragraphe.
Je recommande de lire les tutoriels officiels Sun/Oracle plutôt que ceux de tiers. Sinon, vous risqueriez de finir par apprendre de mauvaises pratiques.
C'est une forme alternative, empruntée à C
, sur laquelle Java est basé.
À titre de curiosité, il existe trois façons de définir une méthode main
valide en Java:
public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
Il n'y a pas de différence, mais Sun recommande de le placer à côté du type comme expliqué ici
L'option la plus préférée est int[] a
- car int[]
est le type et a
est le nom. (votre deuxième option est la même que celle-ci, avec un espace mal placé)
Fonctionnellement, il n'y a pas de différence entre eux.
Le Spécification du langage Java dit:
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[][];
Ils donneront donc exactement le même code d'octet.
Comme déjà indiqué, il n'y a pas beaucoup de différence (si vous déclarez une seule variable par ligne).
Notez que SonarQube considère votre deuxième cas comme un mineur code odeur:
Les indicateurs de tableau "[]" doivent figurer sur le type, pas sur la variable (calmar: S1197)
Les indicateurs de tableau doivent toujours être situés sur le type pour une meilleure lisibilité du code. Sinon, les développeurs doivent examiner à la fois le type et le nom de la variable pour savoir si une variable est un tableau ou non.
Exemple de code non conforme
int matrix[][]; // Noncompliant int[] matrix[]; // Noncompliant
Solution conforme
int[][] matrix; // Compliant
Ce sont les mêmes, mais il y a une différence importante entre ces déclarations:
// 1.
int regular, array[];
// 2.
int[] regular, array;
dans 1. regular est juste un int, par opposition à 2. où regular et array sont des tableaux d'int.
La deuxième déclaration que vous avez est donc préférable, car elle est plus claire. Le premier formulaire est également déconseillé selon ce tutoriel sur Oracle .
En Java, ce sont simplement différentes méthodes syntaxiques pour dire la même chose.
Ils sont les mêmes. L'un est plus lisible (pour certains) que l'autre.
Ils sont complètement équivalents. int [] array
est le style préféré. int array[]
est simplement fourni en tant que style équivalent compatible C.
Il n'y a pas de différence de fonctionnalité entre les deux styles de déclaration. Les deux déclarent un tableau d'int.
Mais int[] a
conserve les informations de type ensemble et est plus détaillé, donc je la préfère.
Les deux ont la même signification. Cependant, l’existence de ces variantes permet également ceci:
int[] a, b[];
qui est le même que:
int[] a;
int[][] b;
Cependant, c'est un style de code horrible et ne devrait jamais être fait.
Oui, exactement pareil. Personnellement, je préfère
int[] integers;
parce que cela rend immédiatement évident à quiconque lit votre code que des entiers sont un tableau d'int, par opposition à
int integers[];
ce qui ne rend pas tout cela évident, en particulier si vous avez plusieurs déclarations dans une ligne. Mais encore une fois, ils sont équivalents, donc cela revient à la préférence personnelle.
Consultez cette page sur les tableaux en Java pour des exemples plus détaillés.
lors de la déclaration d'une seule référence de tableau, il n'y a pas beaucoup de différence entre elles. les deux déclarations suivantes sont donc identiques.
int a[]; // comfortable to programmers who migrated from C/C++
int[] a; // standard Java notation
lors de la déclaration de plusieurs références de tableau, nous pouvons trouver une différence entre elles. les deux déclarations suivantes ont la même signification. en fait, c'est au programmeur de choisir lequel est suivi. mais la notation standard Java est recommandée.
int a[],b[],c[]; // three array references
int[] a,b,c; // three array references
Les deux sont bons. Je suggère d'en choisir un et de s'en tenir à cela. (Je fais le second)
Tandis que le int integers[]
solution trouve ses racines dans le langage C (et peut donc être considéré comme une approche "normale"), beaucoup de gens trouvent int[] integers
plus logique, car il ne permet pas de créer des variables de types différents (c’est-à-dire un int et un tableau) dans une déclaration (par opposition à la déclaration de style C).