Ich habe kürzlich über den Unterschied zwischen den beiden Arten der Definition eines Arrays nachgedacht:
int[] array
int array[]
Ist da ein Unterschied?
Sie sind semantisch identisch. Die int array[]
Syntax wurde nur hinzugefügt, um C-Programmierern zu helfen, sich an Java zu gewöhnen.
int[] array
ist viel vorzuziehen und weniger verwirrend.
int array[]
Syntax. Auch logisch ... auf verdrehte Weise. :)int array[]
macht für mich mehr Sinn. Was halten Sie von dieser Erklärung?int[] x, y
? Isty
ein Array oder nicht? Vielleicht ist es das, vielleicht ist es das nicht. Nur Javas Gurus können mit Zuversicht antworten ....int[] x, y
,y
ist ein Array (wegen[]
der Art angehört), und im Fall einesint x[], y
,y
kein Array ([]
gehört zur Variable).Es gibt einen kleinen Unterschied, wenn Sie mehr als eine Variable in derselben Deklaration deklarieren:
Beachten Sie, dass dies ein schlechter Codierungsstil ist, obwohl der Compiler Ihren Fehler mit ziemlicher Sicherheit abfängt, sobald Sie versuchen, ihn zu verwenden
d
.quelle
Es gibt keinen Unterschied.
Ich bevorzuge das
type[] name
Format bei ist klar, dass die Variable ein Array ist (weniger umschauen, um herauszufinden, was es ist).BEARBEITEN:
Oh, warte, es gibt einen Unterschied (ich habe vergessen, weil ich nie mehr als eine Variable gleichzeitig deklariere):
quelle
Nein, das sind die gleichen. jedoch
ist äquivalent zu:
Entnommen aus der Java-Spezifikation . Das bedeutet, dass
sind anders. Ich würde keine dieser mehrfachen Erklärungen empfehlen. Am einfachsten zu lesen wäre (wahrscheinlich):
quelle
Aus Abschnitt 10.2 der Java-Sprachspezifikation :
Persönlich verwendet fast der gesamte Java-Code, den ich je gesehen habe, das erste Formular. Dies ist sinnvoller, wenn alle Typinformationen über die Variable an einem Ort aufbewahrt werden. Ich wünschte, die zweite Form wäre nicht erlaubt, um ehrlich zu sein ... aber so ist das Leben ...
Zum Glück glaube ich nicht, dass ich diesen (gültigen) Code jemals gesehen habe :
quelle
int[] a[];
- das wird nie unklar sein ;-)Die beiden Befehle sind dasselbe.
Mit der Syntax können Sie mehrere Objekte deklarieren:
Siehe: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
quelle
Kein Unterschied.
Zitat aus der Sonne :
quelle
Es gibt keinen Unterschied zwischen den beiden; beide deklarieren ein Array von
int
s. Ersteres wird jedoch bevorzugt, da alle Typinformationen an einem Ort gespeichert werden. Letzteres wird nur für C / C ++ - Programmierer, die auf Java umsteigen, wirklich unterstützt.quelle
Es gibt keinen wirklichen Unterschied; jedoch,
wird bevorzugt, da dies eindeutig anzeigt, dass der Typ ein Array ist.
quelle
Beide sind gleichermaßen gültig. Von der
int puzzle[]
Form wird jedoch abgeraten, dieint[] puzzle
gemäß den Kodierungskonventionen bevorzugt wird . Siehe auch das offizielle Java-Arrays-Tutorial :Beachten Sie den letzten Absatz.
Ich empfehle, die offiziellen Sun / Oracle-Tutorials zu lesen, anstatt einige von Drittanbietern. Sie würden sonst riskieren, schlechte Praktiken zu lernen.
quelle
Es ist eine alternative Form, die entlehnt wurde
C
und auf der Java basiert.Aus Neugier gibt es drei Möglichkeiten, eine gültige
main
Methode in Java zu definieren :public static void main(String[] args)
public static void main(String args[])
public static void main(String... args)
quelle
public static void main ( String \u005B \u005D args )
Dies ist auch eine andere Variante.String... param
, ist ein Array, then why it is not possible to call a method like say
someMethod (1, 2) `wenn man definiertsomeMethod
alssomeMethod ( int[] numbers )
. Arrays verlangen, dass das Argument aus einem zusammenhängenden Speicherort stammtvarargs
, machen jedoch zuerst ein Array aus den angegebenen Argumenten. Darüber hinausvarargs
kann a nur das letzte Argument einer Methode sein, obwohl dies für ein Array nicht gilt.meth(int... a)
als entwedermeth(1, 2)
odermeth(new int[] {1, 2})
. Varargs ist syntaktischer Zucker, der die erste Version in die zweite Version verwandelt. Der tatsächliche (Bytecode-) Typ des Parameters ist ein Array-Typ. Wenn Sie darüber nachdenken, dass Sie der Letzte sein müssen, gibt es keine andere vernünftige Wahl.Es gibt keinen Unterschied, aber Sun empfiehlt, ihn wie hier beschrieben neben den Typ zu setzen
quelle
Die am meisten bevorzugte Option ist
int[] a
- weilint[]
der Typ unda
der Name ist. (Ihre zweite Option ist dieselbe wie diese, mit falschem Platz)Funktionell gibt es keinen Unterschied zwischen ihnen.
quelle
Die Java-Sprachspezifikation lautet:
Somit ergeben sie genau den gleichen Bytecode.
quelle
In Java sind dies einfach verschiedene syntaktische Methoden, um dasselbe zu sagen.
quelle
Sie sind die gleichen. Einer ist (für einige) besser lesbar als der andere.
quelle
Sie sind völlig gleichwertig.
int [] array
ist der bevorzugte Stil.int array[]
wird nur als äquivalenter, C-kompatibler Stil bereitgestellt.quelle
Beide haben die gleiche Bedeutung. Das Vorhandensein dieser Varianten ermöglicht jedoch auch Folgendes:
Das ist das gleiche wie:
Dies ist jedoch ein schrecklicher Codierungsstil und sollte niemals durchgeführt werden.
quelle
Es gibt keinen Unterschied in der Funktionalität zwischen beiden Deklarationsstilen. Beide deklarieren das Array von int.
Aber
int[] a
hält Typinformationen zusammen und ist ausführlicher, also bevorzuge ich es.quelle
Sie sind gleich, aber es gibt einen wichtigen Unterschied zwischen diesen Aussagen:
in 1. regulär ist nur ein int, im Gegensatz zu 2. wo sowohl regulär als auch Array Arrays von int sind.
Die zweite Aussage, die Sie haben, wird daher bevorzugt, da sie klarer ist. Das erste Formular wird gemäß diesem Tutorial zu Oracle ebenfalls nicht empfohlen .
quelle
Wie bereits erwähnt, gibt es keinen großen Unterschied (wenn Sie nur eine Variable pro Zeile deklarieren).
Beachten Sie, dass SonarQube Ihren zweiten Fall als geringfügigen Codegeruch behandelt :
quelle
Ja, genau das gleiche. Ich persönlich bevorzuge
weil es jedem, der Ihren Code liest, sofort klar macht, dass Ganzzahlen ein Array von Ints sind, im Gegensatz zu
Das macht es nicht so offensichtlich, besonders wenn Sie mehrere Deklarationen in einer Zeile haben. Aber auch hier sind sie gleichwertig, so dass es auf die persönlichen Vorlieben ankommt.
Auf dieser Seite zu Arrays in Java finden Sie ausführlichere Beispiele.
quelle
Wenn Sie eine einzelne Array-Referenz deklarieren, gibt es keinen großen Unterschied zwischen ihnen. Die folgenden beiden Erklärungen sind also gleich.
Wenn wir mehrere Array-Referenzen deklarieren, können wir einen Unterschied zwischen ihnen feststellen. Die folgenden zwei Aussagen bedeuten dasselbe. in der Tat ist es Sache des Programmierers, dem man folgt. Es wird jedoch die Standard-Java-Notation empfohlen.
quelle
Beide sind ok. Ich schlage vor, einen auszuwählen und dabei zu bleiben. (Ich mache den zweiten)
quelle
Während die
int integers[]
Lösung in der C-Sprache verwurzelt ist (und daher als "normaler" Ansatz angesehen werden kann), finden es viele Menschenint[] integers
logischer, Variablen unterschiedlichen Typs (dh ein int und ein Array) in einer Deklaration (im Gegensatz zu) zu erstellen die C-Deklaration).quelle