Frage

Ich habe vor kurzem wurde zwischen den zwei Möglichkeiten, um den Unterschied zu denken ein Array definieren:

  1. int[] array
  2. int array[]

Gibt es einen Unterschied?

War es hilfreich?

Lösung

Sie sind semantisch identisch. Die int array[] Syntax wurde nur hinzugefügt C-Programmierer Java gewöhnen zu helfen.

int[] array ist viel besser, und weniger verwirrend.

Andere Tipps

Es gibt einen kleinen Unterschied, wenn Sie mehr als eine Variable in der gleichen Erklärung passieren 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 schlechte Codierungsstil, obwohl der Compiler mit ziemlicher Sicherheit Ihr Fehler in dem Moment fangen Sie versuchen, d zu verwenden.

Es gibt keinen Unterschied.

Ich ziehe das type[] name Format an ist klar, dass die Variable ist ein Array (weniger schaut sich um, um herauszufinden, was es ist).

EDIT:

Oh, Moment mal gibt es einen Unterschied (ich habe vergessen, weil ich nie zu einem Zeitpunkt mehr als eine Variable deklarieren):

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

Nein, das ist die gleiche. Allerdings

byte[] rowvector, colvector, matrix[];

entspricht:

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

Genommen von Java Specification . Das bedeutet, dass

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

sind unterschiedlich. Ich würde keine dieser mehrere Erklärungen empfehlen. Am einfachsten lesen würde (wahrscheinlich) sein:

int[] a;
int[] b;

Abschnitt 10.2 der Java Language Specification :

  

Die [] als Teil zu Beginn der Erklärung des Typs erscheinen, oder als Teil des declarator für eine bestimmte Variable oder beides, wie in diesem Beispiel:

 byte[] rowvector, colvector, matrix[];
     

Diese Erklärung entspricht:

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

Persönlich fast alle die Java Code, den ich je gesehen habe verwendet die erste Form, die, indem sie alle Art Informationen über die Variable in einem Ort mehr Sinn macht. Ich wünsche, die zweite Form nicht zugelassen wurde, um ehrlich zu sein ... aber so ist das Leben ...

Zum Glück habe ich nicht glaube, ich habe immer sehen diese (gültig) Code:

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

Die beiden Befehle sind die gleiche Sache.

Sie können die Syntax verwenden, um mehrere Objekte zu deklarieren:

int[] arrayOne, arrayTwo; //both arrays

int arrayOne[], intOne; //one array one int 

siehe: http: //java.sun. com / docs / Bücher / JLS / second_edition / html / arrays.doc.html

Kein Unterschied.

Zitiert von Sun :

  

Die [] kann zu Beginn der Erklärung als Teil des Typs erscheinen, oder als Teil des declarator für eine bestimmte Variable oder beides, wie in diesem Beispiel: byte[] rowvector, colvector, matrix[];

     

Diese Erklärung entspricht:   byte rowvector[], colvector[], matrix[][];

Es gibt keinen Unterschied zwischen den beiden; beide ein Array von ints erklären. Jedoch ist die erstere bevorzugt, da sie die Typ-Informationen an einem Ort halten. Letzteres ist wirklich nur zum Nutzen von C / C ++ Programmierern Java bewegen unterstützt.

Es gibt keinen wirklichen Unterschied; jedoch

double[] items = new double[10];

bevorzugt, da es zeigt deutlich, dass der Typ ein Array ist.

Beide sind gleichermaßen gültig. Die int puzzle[] Form jedoch abgeraten wird, wird die int[] puzzle gemäß der bevorzugten . Siehe auch die 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 auch die eckigen Klammern nach dem Namen des Array platzieren:

float anArrayOfFloats[]; // this form is discouraged
     

Allerdings Konvention schreckt diese Form; die Klammern identifizieren den Array-Typ und sollte mit der Typenbezeichnung erscheinen.

Beachten Sie den letzten Absatz.

Ich empfehle die offizielle Sun / Oracle-Tutorials statt, einige 3rd-Party diejenigen zu lesen. Sie würden sonst Gefahr beim Lernen schlechte Praktiken enden.

Es ist eine alternative Form, die von C entlehnt wurde, auf dem Java-basiert.

Als eine Kuriosität gibt es drei Wege 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)

Es gibt keinen Unterschied, aber Sun empfiehlt es neben den Typen setzen, wie erklärt hier

Die am meisten bevorzugte Option ist int[] a - weil int[] der Typ ist, und a ist der Name. (Ihre zweite Option ist das gleiche wie das, mit unangebrachten Raum)

Funktional gibt es keinen Unterschied zwischen ihnen.

Die Java Language Specification sagt:

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[][];

So werden sie in genau der gleichen Byte-Code zur Folge haben.

In Java, diese sind einfach verschiedene syntaktische Methoden dasselbe zu sagen.

Sie sind gleich. Man ist besser lesbar (einige) als die andere.

Sie sind völlig gleichwertig. int [] array ist der bevorzugte Stil. int array[] ist nur als Äquivalent zur Verfügung gestellt, C-kompatiblen Stil.

Beide haben die gleiche Bedeutung. Allerdings erlaubt die Existenz dieser Varianten auch diese:

int[] a, b[];

das ist das gleiche wie:

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

Allerdings ist diese schreckliche Codierungsstil und sollte nie geschehen.

Es gibt keinen Unterschied in der Funktionalität zwischen den beiden Arten der Erklärung. Beide deklarieren Array von int.

Aber int[] a hält Informationen zusammen geben und ist ausführlicher so ziehe ich es.

Es ist die gleiche, aber es gibt einen wichtigen Unterschied zwischen diesen Aussagen:

// 1.
int regular, array[];
// 2.
int[] regular, array;

in 1.em regulär ist nur ein int, im Gegensatz zu 2, wo regulären und Array-Arrays von int das ist.

Die zweite Anweisung Sie ist daher bevorzugt, da es klar ist. Die erste Form ist auch nach diesem Tutorial on Oracle abgeraten.

Wie bereits erwähnt, gibt es keinen großen Unterschied (wenn Sie nur eine Variable pro Zeile deklarieren).

Beachten Sie, dass Sonarqube Ihrem zweiten Fall als Minderjähriger behandelt Code Geruch:

  

Array Bezeich "[]" von der Art sein sollte, nicht die Variable (Tintenfisch: S1197)

     

Array Bezeich sollte immer von der Art angeordnet werden zur besseren Code   Lesbarkeit. Andernfalls müssen die Entwickler sowohl auf der Art aussehen und die   Variablennamen zu wissen, ob eine Variable ist ein Array.

     

Nicht kompatibel Code-Beispiel

int matrix[][];   // Noncompliant
int[] matrix[];   // Noncompliant
     

konforme Lösung

int[][] matrix;   // Compliant

Ja, genau das gleiche. Persönlich ziehe ich

int[] integers; 

, weil sie es sofort offensichtlich für jeden macht den Code zu lesen, die ganzen Zahlen ist ein Array von int ist, im Gegensatz zu

int integers[];

das macht es nicht, dass alle offensichtlich, vor allem, wenn Sie mehrere Erklärungen in einer Zeile haben. Aber noch einmal, sie sind gleichwertig, so kommt es auf den persönlichen Vorlieben.

Sehen Sie sich dieser Seite auf Arrays in Java für mehr in der Tiefen Beispielen.

, wenn ein einzelnes Array Referenz erklärt, gibt es nicht viel Unterschied zwischen ihnen. so die beiden folgenden Erklärungen sind gleich.

int a[];  // comfortable to programmers who migrated from C/C++
int[] a;  // standard java notation 

, wenn mehrere Array Referenzen erklären, wir Unterschied zwischen ihnen gibt. die beiden folgenden Aussagen bedeuten gleiche. in der Tat ist es für den Programmierer auf, die eine ist folgen. aber die Standard-Java-Notation wird empfohlen.

int a[],b[],c[]; // three array references
int[] a,b,c;  // three array references

Beide sind in Ordnung. Ich schlage vor, mit ihm ein und halten zu holen. (Ich mache die zweite)

Während die int integers[] Lösung Wurzeln in der Sprache C (und kann somit der „normale“ Ansatz in Betracht gezogen werden), viele Menschen finden int[] integers logische, da es nicht zulässt Variablen verschiedenen Typen erstellen (dh ein int und ein Array) in einer Erklärung (in Bezug auf die C-Stil Erklärung gegenüber).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top