Unterschied zwischen int [] array und int array []

182

Ich habe kürzlich über den Unterschied zwischen den beiden Möglichkeiten, ein Array zu definieren, nachgedacht:

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

Gibt es einen Unterschied?

    
mslot 24.09.2008, 19:06
quelle

25 Antworten

218

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.

    
skaffman 24.09.2008, 19:08
quelle
141

Es gibt einen kleinen Unterschied, wenn Sie mehr als eine Variable in derselben Deklaration deklarieren:

%Vor%

Beachten Sie, dass dies ein schlechter Codierungsstil ist, obwohl der Compiler Ihren Fehler mit ziemlicher Sicherheit abfangen wird, wenn Sie versuchen, d zu verwenden.

    
Adam Rosenfield 24.09.2008 19:12
quelle
53

Es gibt keinen Unterschied.

Ich bevorzuge das Format type[] name bei is ist klar, dass die Variable ein Array ist (weniger herumschauen, um herauszufinden, was es ist).

BEARBEITEN:

Oh, warte, es gibt einen Unterschied (ich habe vergessen, weil ich nie mehr als eine Variable gleichzeitig deklariere):

%Vor%     
TofuBeer 25.02.2009 19:59
quelle
23

Nein, das sind die gleichen. Jedoch

%Vor%

entspricht:

%Vor%

Entnommen aus der Java-Spezifikation . Das bedeutet, dass

%Vor%

sind anders. Ich würde keine dieser vielen Deklarationen empfehlen. Am einfachsten zu lesen wäre (wahrscheinlich):

%Vor%     
Ishtar 02.10.2010 14:16
quelle
20

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 beides erscheinen, wie in diesem Beispiel:

%Vor%      

Diese Deklaration entspricht:

%Vor%

Persönlich fast all Der Java-Code, den ich jemals gesehen habe, verwendet die erste Form, was mehr Sinn macht, wenn man alle Typinformationen über die Variable an einem Ort behält. Ich wünschte, die zweite Form wäre nicht erlaubt, um ehrlich zu sein ... aber so ist das Leben ...

Glücklicherweise glaube ich nicht, dass ich jemals diesen (gültigen) Code gesehen habe:

%Vor%     
Jon Skeet 22.09.2011 21:50
quelle
19

Die beiden Befehle sind dasselbe.

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

%Vor%

siehe: Ссылка

    
George Strother 24.09.2008 19:10
quelle
12

Kein Unterschied.

Zitat aus Sun :

  

Der [] kann als Teil des Typs am Anfang der Deklaration oder als Teil des Deklarators für eine bestimmte Variable oder beides erscheinen, wie in diesem Beispiel: byte[] rowvector, colvector, matrix[];

     

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

    
Yuval Adam 18.01.2009 10:30
quelle
11

Es gibt keinen wirklichen Unterschied; jedoch

%Vor%

ist bevorzugt, da es eindeutig anzeigt, dass der Typ ein Array ist.

    
Aaron Maenpaa 25.02.2009 20:00
quelle
10

Es gibt keinen Unterschied zwischen den beiden; Beide deklarieren ein Array von int s. Das erstere wird jedoch bevorzugt, da es die Typinformation an einem Ort hält. Letzteres wird nur wirklich unterstützt, wenn C / C ++ Programmierer nach Java umziehen.

    
Luke Woodward 18.01.2009 10:29
quelle
6

Beide sind gleichermaßen gültig. Das Formular int puzzle[] wird jedoch nicht empfohlen, das int[] puzzle wird gemäß den Kodierungskonventionen bevorzugt . Siehe auch das offizielle Tutorial Java-Arrays :

  

Ebenso können Arrays anderer Typen deklariert werden:

%Vor%      

Sie können die eckigen Klammern auch hinter dem Namen des Arrays platzieren:

%Vor%      

Konvention jedoch entmutigt diese Form; Die Klammern identifizieren den Array-Typ und sollten mit der Typbezeichnung erscheinen.

Beachten Sie den letzten Absatz.

Ich empfehle, die offiziellen Sun / Oracle-Tutorials zu lesen und nicht die von Drittanbietern. Sie würden sonst Gefahr laufen, schlechte Praktiken zu lernen.

    
BalusC 22.09.2011 21:48
quelle
5

Es ist eine alternative Form, die von C übernommen wurde, auf der Java basiert.

Als Kuriosität 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)
Bohemian 22.09.2011 21:48
quelle
4

Es gibt keinen Unterschied, aber Sun empfiehlt, es neben den Typ zu legen, wie hier beschrieben

    
André 24.09.2008 19:09
quelle
3

Die am meisten bevorzugte Option ist int[] a - weil int[] der Typ und a der Name ist. (Ihre zweite Option ist die gleiche, mit falsch platziertem Platz)

Funktional gibt es keinen Unterschied zwischen ihnen.

    
Bozho 02.10.2010 14:13
quelle
2

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

    
Zach Lute 24.09.2008 19:08
quelle
2

Die Java-Sprachspezifikation lautet:

%Vor%

Daraus ergibt sich genau der gleiche Bytecode.

    
Kdeveloper 02.10.2010 14:14
quelle
2

Es gibt keinen Unterschied in der Funktionalität zwischen beiden Deklarationsstilen. Beide erklären Array von int.

Aber int[] a hält Typinformationen zusammen und ist ausführlicher, also bevorzuge ich es.

    
YoK 02.10.2010 14:18
quelle
2

Sie sind gleich, aber es gibt einen wichtigen Unterschied zwischen diesen Aussagen:

%Vor%

in 1. regulär ist nur ein int, im Gegensatz zu 2. wo sowohl reguläre als auch array Arrays von int sind.

Die zweite Aussage, die Sie haben, wird daher bevorzugt, da es klarer ist. Die erste Form wird auch gemäß diesem Tutorial zu Oracle abgeraten.

    
Patrick 24.10.2010 10:07
quelle
1

Sie sind gleich. Einer ist für einige lesbarer als der andere.

    
basszero 24.09.2008 19:08
quelle
1

Sie sind völlig gleichwertig. int [] array ist der bevorzugte Stil. int array[] wird nur als äquivalenter, C-kompatibler Stil bereitgestellt.

    
Derek Park 24.09.2008 19:08
quelle
1

Beide haben dieselbe Bedeutung. Die Existenz dieser Varianten erlaubt dies jedoch auch:

%Vor%

ist das gleiche wie:

%Vor%

Allerdings ist das ein schrecklicher Programmierstil und sollte nie gemacht werden.

    
Michael Borgwardt 02.10.2010 14:18
quelle
1

Ja, genau das gleiche. Persönlich bevorzuge ich

%Vor%

weil es für jeden, der Ihren Code liest, sofort offensichtlich wird, dass Ganzzahlen ein Array von Ints sind, im Gegensatz zu

%Vor%

was es nicht so offensichtlich macht, besonders wenn Sie mehrere Deklarationen in einer Zeile haben. Aber wieder sind sie gleichwertig, also kommt es auf persönliche Vorlieben an.

Lesen Sie diese Seite auf Arrays in Java , um mehr zu erfahren Tiefenbeispiele.

    
David Watson 24.10.2010 10:03
quelle
1

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 minderwertigen Code-Geruch behandelt:

  

Array-Bezeichner "[]" sollte auf dem Typ sein, nicht auf der Variablen (Tintenfisch: S1197)

     

Array-Bezeichner sollten immer auf dem Typ für besseren Code liegen   Lesbarkeit. Ansonsten müssen Entwickler sowohl auf den Typ als auch auf den   Variablenname um zu wissen, ob eine Variable ein Array ist oder nicht.

     

Beispiel für nicht konformen Code

%Vor%      

Compliant Lösung

%Vor%
    
Robert Hume 25.01.2017 15:21
quelle
0

Beide sind in Ordnung. Ich schlage vor, eins auszuwählen und dabei zu bleiben. (Ich mache den zweiten)

    
Albert 24.10.2010 10:03
quelle
0

Während die int integers[] -Lösung in der C-Sprache verwurzelt ist (und daher als "normaler" Ansatz betrachtet werden kann), finden viele Leute int[] integers logischer, da es nicht erlaubt, Variablen verschiedener Typen (dh ein int und ein Array) in einer Deklaration (im Gegensatz zur Deklaration im C-Stil).

    
Kos 24.10.2010 11:50
quelle
0

Wenn Sie eine einzelne Array-Referenz deklarieren, gibt es keinen großen Unterschied zwischen ihnen. also sind die folgenden zwei Deklarationen gleich.

%Vor%

Wenn wir mehrere Array-Referenzen deklarieren, können wir Unterschiede zwischen ihnen finden. Die folgenden zwei Aussagen bedeuten dasselbe. In der Tat ist es Sache des Programmierers, welchem ​​man folgt. aber die Standard-Java-Notation wird empfohlen.

%Vor%     
PoornaChandra 04.01.2017 07:43
quelle

Tags und Links