J'ai récemment réfléchi à la différence entre les deux façons de définir un tableau:
int[] array
int array[]
Y a-t-il une différence?
Ils sont sémantiquement identiques. La int array[]
syntaxe 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.
int array[]
syntaxe. Aussi logique ... d'une manière tordue. :)int array[]
est plus logique pour moi. Que pensez-vous de cette déclaration?int[] x, y
? Est-cey
un tableau ou non? Peut-être que oui, peut-être que non. Seuls les gourous de Java peuvent répondre en toute confiance ....int[] x, y
,y
est un tableau (car[]
appartient au type), et dans le cas deint x[], y
,y
n'est pas un tableau ([]
appartient à la variable).Il y a une légère différence, si vous déclarez plusieurs variables dans la même déclaration:
Notez que c'est un mauvais style de codage, bien que le compilateur détecte presque certainement votre erreur au moment où vous essayez d'utiliser
d
.la source
Il n'y a pas de différence.
Je préfère le
type[] name
format à c'est clair que la variable est un tableau (moins en regardant autour pour savoir ce que c'est).ÉDITER:
Oh attends il y a une différence (j'ai oublié car je ne déclare jamais plus d'une variable à la fois):
la source
Non, ce sont les mêmes. toutefois
est équivalent à:
Tiré de la spécification Java . Cela veut dire que
sont différents. Je ne recommanderais aucune de ces déclarations multiples. Le plus facile à lire serait (probablement):
la source
De la section 10.2 de la spécification du langage Java :
Personnellement, presque tout le code Java que j'ai jamais vu utilise le premier formulaire, ce qui est plus logique en conservant toutes les informations de type sur la variable en un seul endroit. J'aimerais que la deuxième forme soit refusée, pour être honnête ... mais telle est la vie ...
Heureusement, je ne pense pas avoir jamais vu ce code (valide):
la source
int[] a[];
- ça ne sera jamais clair ;-)Les deux commandes sont la même chose.
Vous pouvez utiliser la syntaxe pour déclarer plusieurs objets:
voir: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
la source
Aucune différence.
Citant Sun :
la source
Il n'y a aucune différence entre les deux; déclarent tous deux un tableau de
int
s. Cependant, le premier est préféré car il conserve les informations de type en un seul endroit. Ce dernier n'est vraiment pris en charge que pour les programmeurs C / C ++ qui migrent vers Java.la source
Il n'y a pas de réelle différence; cependant,
est préférable car elle indique clairement que le type est un tableau.
la source
Les deux sont également valables. La
int puzzle[]
forme est cependant déconseillée, laint[] puzzle
est préférée selon les conventions de codage . Voir également le didacticiel officiel des tableaux Java :Notez le dernier paragraphe.
Je recommande de lire les didacticiels officiels Sun / Oracle plutôt que ceux de tiers. Sinon, vous risqueriez de finir par apprendre de mauvaises pratiques.
la source
C'est une forme alternative, qui a été empruntée
C
, sur laquelle Java est basé.Par curiosité, il existe trois façons de définir une
main
méthode valide en java:public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
la source
public static void main ( String \u005B \u005D args )
, c'est une autre variante aussi.String... param
, est un tableau, then why it is not possible to call a method like say
someMethod (1, 2) `si l'on définitsomeMethod
assomeMethod ( int[] numbers )
. Cependant, les tableaux exigent que l'argument, qui doit provenir d'un emplacement de mémoire contigu, crée d'abordvarargs
un tableau à partir des arguments fournis. De plus, avarargs
ne peut être que l'argument final d'une méthode, bien qu'il n'en soit pas de même pour un tableau.meth(int... a)
peut être appelé commemeth(1, 2)
oumeth(new int[] {1, 2})
. Varargs est un sucre syntaxique qui transforme la première version en deuxième version. Le type réel (bytecode) du paramètre est un type tableau. Quant à être le dernier, si vous y réfléchissez, il n'y a pas d'autre choix sensé.Il n'y a pas de différence, mais Sun recommande de le mettre à côté du type comme expliqué ici
la source
L'option la plus préférée est
int[] a
- carint[]
est le type eta
le nom. (votre 2e option est la même que celle-ci, avec un espace mal placé)Fonctionnellement, il n'y a aucune différence entre eux.
la source
La spécification du langage Java dit:
Ainsi, ils donneront exactement le même code d'octet.
la source
En Java, ce sont simplement des méthodes syntaxiques différentes pour dire la même chose.
la source
Ce sont les mêmes. L'un est plus lisible (pour certains) que l'autre.
la source
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.la source
Les deux ont la même signification. Cependant, l'existence de ces variantes permet également ceci:
ce qui équivaut à:
Cependant, c'est un style de codage horrible et ne devrait jamais être fait.
la source
Il n'y a aucune 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 verbeux, donc je le préfère.la source
Ce sont les mêmes, mais il y a une différence importante entre ces déclarations:
dans 1. regular est juste un int, contrairement à 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 .
la source
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 traite votre deuxième cas comme une odeur de code mineur :
la source
Oui, exactement la même chose. Personnellement, je préfère
car il est immédiatement évident pour quiconque lit votre code que les entiers sont un tableau d'int
ce qui ne rend pas tout cela évident, en particulier si vous avez plusieurs déclarations sur une seule ligne. Mais encore une fois, ils sont équivalents, il s'agit donc de préférences personnelles.
Consultez cette page sur les tableaux en Java pour des exemples plus détaillés.
la source
lors de la déclaration d'une seule référence de tableau, il n'y a pas beaucoup de différence entre elles. donc les deux déclarations suivantes sont identiques.
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 signifient la même chose. en fait, c'est au programmeur que l'on doit suivre. mais la notation java standard est recommandée.
la source
Les deux sont bons. Je suggère d'en choisir un et de le respecter. (Je fais le second)
la source
Bien que la
int integers[]
solution trouve ses racines dans le langage C (et peut donc être considérée comme l'approche "normale"), de nombreuses personnes trouventint[] integers
plus logique car elle interdit de créer des variables de différents types (c'est-à-dire un int et un tableau) dans une déclaration (par opposition à la déclaration de style C).la source