Warum int [] a = new int [1] statt nur int a?

7

Gibt es in diesem Code eine versteckte Bedeutung, die ich in Java nicht sehe? Wie kann es nützlich sein?

%Vor%

als nur

%Vor%

weil es aus meiner Sicht dasselbe ist?

    
Sergey 03.06.2011, 02:57
quelle

7 Antworten

15
%Vor%

definiert ein primitives int.

%Vor%

definiert ein Array mit Platz für 1 int.

Sie sind zwei sehr verschiedene Dinge. Das Primitiv hat keine Methoden / Eigenschaften, aber ein Array hat Eigenschaften (Länge) und Methoden (speziell seine Klonmethode und alle Methoden von Object).

Arrays sind ein bisschen wie ein seltsames Biest. Sie sind in der JLS definiert.

In der Praxis wäre es sinnvoll, dies zu tun, wenn Sie mit einer API interagieren müssen, die ein Array verwendet und mit den Ergebnissen arbeitet. Es ist durchaus zulässig, einen Verweis auf ein Array mit 0, 1 oder n Eigenschaften zu übergeben. Es gibt wahrscheinlich andere gültige Gründe, ein Array mit 1 Element zu definieren.

Ich kann mir keine Anwendungsfälle vorstellen, in denen Sie ein Array mit einem Element definieren möchten, nur um das Array zu umgehen und das Element zu erhalten.

    
hvgotcodes 03.06.2011, 03:00
quelle
5

Einer ist auf dem Stapel, einer ist auf dem Haufen.

    
Mehrdad 03.06.2011 03:01
quelle
4

Ein Unterschied besteht darin, dass Sie eine Methode schreiben können, die ihr int-Argument ändert, indem Sie arg[0] ändern. Dieser Trick wird in einigen Codes, die ich gesehen habe, ziemlich oft verwendet. So können Sie beispielsweise einen boolean Erfolg oder Misserfolg angeben und einen int Wert, der einem anderen Zweck dient. Ohne diesen Trick müssten Sie ein Objekt zurückgeben, das die beiden Werte enthält.

    
Ted Hopp 03.06.2011 03:01
quelle
1

Ein Array der Größe Eins ist nicht dasselbe wie eine einzelne ganze Zahl.

Selbst wenn sie dieselben Informationen enthalten, sind sie unterschiedliche Typen, so dass Sie sie in verschiedenen Kontexten verwenden können.

Wenn Sie zum Beispiel eine Funktion haben, die eine Funktion für alle Elemente eines Arrays ausführt, Sie aber nur einen Wert berechnen wollen, sollten Sie ein int [1] übergeben, weil die Funktion ein Array erwartet und will wissen, wie viele Werte es verarbeiten soll.

    
akappa 03.06.2011 03:02
quelle
1
%Vor%

definiert eine Variable, die ein int enthalten kann

%Vor%

definiert eine Variable, die ein Array von int

enthalten kann %Vor%

tut das oben, initialisiert es aber auch, indem es tatsächlich ein Array erstellt (von der Größe 1 - es kann 1 int enthalten) und definiert die Variable a , um dieses Array zu halten, definiert aber nicht, was sich im Array befindet. p> %Vor%

macht das oben, definiert aber auch, was sich im Array befindet: das int 1.

Ich nehme an, dass es eine ähnliche Sache macht, in der der Raum für 1 int reserviert ist, aber das Array auch ein Array definiert. Ich nehme an, man könnte sagen, dass diese ähnlich sind:

%Vor%     
Bohemian 03.06.2011 03:11
quelle
0

Es wird verwendet, wenn Sie einen primitiven Datentyp als Referenz übergeben müssen.

Siehe das .

    
scientiaesthete 03.06.2011 03:08
quelle
0

Alle Arrays in Java sind Objekte. Bei der Deklaration: int x = 5; deklarieren Sie einen primitiven Typ.

Wenn Sie int[] x = new int[]; deklarieren, erstellen Sie ein Objekt mit dem Typ int[] .

So int[] ist eigentlich eine Klasse.

    
user2957273 05.11.2013 17:03
quelle

Tags und Links