Antworten:
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? Ist yein Array oder nicht? Vielleicht ist es das, vielleicht ist es das nicht. Nur Javas Gurus können mit Zuversicht antworten ....
int[] x, y, yist ein Array (wegen []der Art angehört), und im Fall eines int x[], y, ykein Array ( []gehört zur Variable).
Es gibt einen kleinen Unterschied, wenn Sie mehr als eine Variable in derselben Deklaration deklarieren:
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
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.
Es gibt keinen Unterschied.
Ich bevorzuge das type[] nameFormat 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):
int[] foo, bar; // both are arrays
int foo[], bar; // foo is an array, bar is an int.
Nein, das sind die gleichen. jedoch
byte[] rowvector, colvector, matrix[];
ist äquivalent zu:
byte rowvector[], colvector[], matrix[][];
Entnommen aus der Java-Spezifikation . Das bedeutet, dass
int a[],b;
int[] a,b;
sind anders. Ich würde keine dieser mehrfachen Erklärungen empfehlen. Am einfachsten zu lesen wäre (wahrscheinlich):
int[] a;
int[] b;
Aus Abschnitt 10.2 der Java-Sprachspezifikation :
Das [] kann als Teil des Typs am Anfang der Deklaration oder als Teil des Deklarators für eine bestimmte Variable oder für beide wie in diesem Beispiel angezeigt werden:
byte[] rowvector, colvector, matrix[];Diese Erklärung entspricht:
byte rowvector[], colvector[], matrix[][];
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 :
String[] rectangular[] = new String[10][10];
int[] a[];- das wird nie unklar sein ;-)
Die beiden Befehle sind dasselbe.
Mit der Syntax können Sie mehrere Objekte deklarieren:
int[] arrayOne, arrayTwo; //both arrays
int arrayOne[], intOne; //one array one int
Siehe: http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html
Kein Unterschied.
Zitat aus der Sonne :
Die
[]können als Teil des Typs am Anfang der Deklaration oder als Teil des Deklarators für eine bestimmte Variable oder für beide wie in diesem Beispiel angezeigt werden:byte[] rowvector, colvector, matrix[];Diese Erklärung entspricht:
byte rowvector[], colvector[], matrix[][];
Es gibt keinen Unterschied zwischen den beiden; beide deklarieren ein Array von ints. 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.
Es gibt keinen wirklichen Unterschied; jedoch,
double[] items = new double[10];
wird bevorzugt, da dies eindeutig anzeigt, dass der Typ ein Array ist.
Beide sind gleichermaßen gültig. Von der int puzzle[]Form wird jedoch abgeraten, die int[] puzzlegemäß den Kodierungskonventionen bevorzugt wird . Siehe auch das offizielle Java-Arrays-Tutorial :
Ebenso können Sie Arrays anderer Typen deklarieren:
byte[] anArrayOfBytes; short[] anArrayOfShorts; long[] anArrayOfLongs; float[] anArrayOfFloats; double[] anArrayOfDoubles; boolean[] anArrayOfBooleans; char[] anArrayOfChars; String[] anArrayOfStrings;Sie können die eckigen Klammern auch nach dem Namen des Arrays setzen:
float anArrayOfFloats[]; // this form is discouragedDie Konvention rät jedoch von dieser Form ab. Die Klammern geben den Array-Typ an und sollten mit der Typbezeichnung angezeigt werden.
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.
Es ist eine alternative Form, die entlehnt wurde Cund auf der Java basiert.
Aus Neugier gibt es drei Möglichkeiten, eine gültige mainMethode in Java zu definieren :
public static void main(String[] args)public static void main(String args[])public static void main(String... args)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 definiert someMethodals someMethod ( int[] numbers ). Arrays verlangen, dass das Argument aus einem zusammenhängenden Speicherort stammt varargs, machen jedoch zuerst ein Array aus den angegebenen Argumenten. Darüber hinaus varargskann a nur das letzte Argument einer Methode sein, obwohl dies für ein Array nicht gilt.
meth(int... a)als entweder meth(1, 2)oder meth(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
Die Java-Sprachspezifikation lautet:
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[][];
Somit ergeben sie genau den gleichen Bytecode.
Sie sind völlig gleichwertig. int [] arrayist der bevorzugte Stil. int array[]wird nur als äquivalenter, C-kompatibler Stil bereitgestellt.
Beide haben die gleiche Bedeutung. Das Vorhandensein dieser Varianten ermöglicht jedoch auch Folgendes:
int[] a, b[];
Das ist das gleiche wie:
int[] a;
int[][] b;
Dies ist jedoch ein schrecklicher Codierungsstil und sollte niemals durchgeführt werden.
Sie sind gleich, aber es gibt einen wichtigen Unterschied zwischen diesen Aussagen:
// 1.
int regular, array[];
// 2.
int[] regular, array;
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 .
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 :
Array-Bezeichner "[]" sollten sich auf den Typ beziehen, nicht auf die Variable (Tintenfisch: S1197)
Array-Bezeichner sollten sich zur besseren Lesbarkeit des Codes immer auf dem Typ befinden. Andernfalls müssen Entwickler sowohl den Typ als auch den Variablennamen überprüfen, um festzustellen, ob eine Variable ein Array ist oder nicht.
Beispiel für nicht konformen Code
int matrix[][]; // Noncompliant int[] matrix[]; // NoncompliantKonforme Lösung
int[][] matrix; // Compliant
Ja, genau das gleiche. Ich persönlich bevorzuge
int[] integers;
weil es jedem, der Ihren Code liest, sofort klar macht, dass Ganzzahlen ein Array von Ints sind, im Gegensatz zu
int integers[];
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.
Wenn Sie eine einzelne Array-Referenz deklarieren, gibt es keinen großen Unterschied zwischen ihnen. Die folgenden beiden Erklärungen sind also gleich.
int a[]; // comfortable to programmers who migrated from C/C++
int[] a; // standard java notation
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.
int a[],b[],c[]; // three array references
int[] a,b,c; // three array references
Während die int integers[]Lösung in der C-Sprache verwurzelt ist (und daher als "normaler" Ansatz angesehen werden kann), finden es viele Menschen int[] integerslogischer, Variablen unterschiedlichen Typs (dh ein int und ein Array) in einer Deklaration (im Gegensatz zu) zu erstellen die C-Deklaration).