Warum sind Arrays in Java? Gibt es bestimmte Gründe?

8

Gibt es einen Grund, warum ein Array in Java ein Objekt ist?

    
giri 05.01.2010, 21:27
quelle

7 Antworten

9

Weil die Java-Sprachspezifikation dies sagt :)

  

In der Programmiersprache Java werden Objekte (§4.3.1) erzeugt, dynamisch erzeugt und können Variablen vom Typ Objekt (§4.3.2) zugewiesen werden. Alle Methoden der Klasse Object können in einem Array aufgerufen werden.

Im Gegensatz zu C ++ bietet Java also echte Arrays als erstklassige Objekte:

  • Es gibt ein length Mitglied.
  • Es gibt eine clone() -Methode, die die gleichnamige Methode in der Klasse Object .
  • überschreibt
  • Außerdem alle Mitglieder der Klasse Object .
  • Eine Ausnahme wird ausgelöst, wenn Sie versuchen, auf ein Array außerhalb der Grenzen zuzugreifen.
  • Arrays werden im dynamischen Speicher abgelegt.
Pascal Thivent 05.01.2010, 22:08
quelle
3

Wenn Arrays zu Objekten gehören, bedeutet das, dass Sie Operationen mit ihnen ausführen können (zB someArray.count ('foo')), anstatt nur gegen sie zu arbeiten (zB count (someArray, 'foo'))) natürlichere Syntax.

    
Ignacio Vazquez-Abrams 05.01.2010 21:31
quelle
1

Ein weiterer Punkt ist, dass Objekte veränderbar sind und als Referenz übergeben werden. In Arrays gibt es keine Felder / Methoden, mit denen Sie "Eigenschaften" des Arrays ändern können, aber Sie können die Elementwerte sicher ändern. Und die Vorteile der Übergabe von Arrays durch Referenz sind ziemlich offensichtlich (obwohl funktionale Programmierer wahrscheinlich wünschen würden, dass Java unveränderbare Listen wertmäßig weitergegeben hätte).

Bearbeiten: vergessen zu erwähnen. In der Zeit vor dem Autoboxing war es hilfreich, Arrays in Sammlungen speichern zu können, in ObjectStreams usw. zu schreiben.

    
Dan 05.01.2010 21:33
quelle
1

Dieser Link erklärt, warum Array Objekte in Java sind (am Anfang der Artikel).

    
Pedro Ghilardi 05.01.2010 21:37
quelle
1

Wahrscheinlich, weil sie so nah wie möglich daran sein wollten, alles zu einem Objekt zu machen. Native Typen sind aus Gründen der Abwärtskompatibilität vorhanden.

    
fastcodejava 05.01.2010 21:37
quelle
0

Damit sie alle Vorteile davon haben:

  • getHashCode ()
  • toString ()

usw.

Und Arrays sind nicht "primitiv", also wenn sie nicht primitiv sein können, müssen sie Objekte sein.

    
Noon Silk 05.01.2010 21:30
quelle
0

Ich bin mir nicht sicher über den offiziellen Grund.

Es macht jedoch Sinn für mich, dass sie Objekte sind, weil Operationen an ihnen ausgeführt werden können (wie etwa die Länge) und es sinnvoller ist, diese Operationen als Elementfunktionen zu unterstützen, anstatt neue Schlüsselwörter einzuführen. Andere Operationen umfassen clone (), die vererbten Operationen von Objekten usw. Arrays sind ebenfalls hashbar und potentiell vergleichbar.

Dies unterscheidet sich von C (und nativen Arrays in C ++), wobei Ihre Arrays im Wesentlichen Zeiger auf einen Speicher-Offset sind.

    
Uri 05.01.2010 21:31
quelle

Tags und Links