Lenght in Java?

3 Antworten

Kleiner gleich Sechs? Nein. Aber kleiner sechs wäre möglich. Es ist egal ob du sagst kleiner gleich Fünf oder kleiner Sechs, denn beide Male wäre es 0 - 5. Die 5 ist kleiner als 6 und bei kleiner gleich ist die 5 mit eingeschlossen.

Es ist wie in der Mathematik.

Einen Array erstellst du immer mit der wahren Länge: 6 [0, 1, 2, 3, 4, 5]. Das wären somit 6 Steckplätze, die gebraucht werden. Diese fangen aber bei 0 an und hier ist das Umdenken wichtig. Ich habe es auch erst richtig verstanden, als ich den Grund erfahren habe, warum es so ist. Den Grund erfährt man in C / C++, wo Arrays keine Arrays sind, sondern Pointer hinter einer Maske.

Dabei funktioniert es wie folgt: Du hast deine Variable des Arrays. Diese zeigt auf eine Adresse in deinem Speicher. Und nach dieser Adresse kommt eine andere Adresse mit dem nächsten Wert. Du kannst also den Pointer wie folgt rechnen *(Array + Index). Das entspricht dann Array[Index]. An der Adresse von Array ist ja auch bereits ein Speicher. Diesen möchte man nicht leer lassen. Deshalb rechnet man *(Array + 0), was dann Array[0] entspricht. Würde man eine 1 setzen, überspringt man ja einen Bereich, welchen man zur Verfügung hat, aber dann ignoriert. Deshalb wäre das zweite Element auch an Position 1, weil es direkt darauf folgt, also *(Array + 1) oder auch Array[1]. Und deshalb rechnet man dabei immer mit 0 als erste Zahl.

Bei der Länge wiederum fragt man die Länge ab. Die Länge startet nicht bei 0. Du zählst ja nicht 0 1 2 3 ..., sondern 1 2 3 4 ... . Deshalb gibt die Länge auch die Zahl zurück, die du schon beim erstellen des Arrays eingegeben hast. Es ist die tatsächliche Länge. Der einzige Grund des Startes bei 0 ist das Speichermanagement, damit man keinen freien Platz überspringt. Aber zählen tut man trotzdem wie gewohnt.

Deshalb wäre es auch <= 5 oder < 6, wenn man 6 zählen will, da der Steckplatz bei der Adresse des Arrays bereits beginnt und deshalb + 0 gerechnet wird.

Sollte es nicht kleiner gleich 6 sein? Weil wir haben ja 6 elemente

0 ist in dem Fall der erste Index, die Schleife beginnt bei 0 und endet bei 5: Indizes sind 0, 1, 2, 3, 4, 5; das sind 6 Elemente.

Du kannst da auch eine 6 stehen haben, musst dann aber kleiner als und und nicht kleiner gleich nutzen

Woher ich das weiß:Studium / Ausbildung – Abgeschlossenes Studium der Informatik (B.Sc.)
EinstNewt142 
Fragesteller
 29.04.2024, 20:25

Dankee:)) und hätte ich oben bei der deklaration quasi nach int [] zahlen= new int [6]

Auch int index=0 schreiben können. Also wär's nicht falsch?

0

Hey,

du vergisst, dass die 0 ja auch mitgezählt wird. 0 1 2 3 4 5 sind ja insgesamt 6 Indizes.

Wenn wir die 6 auch noch als Index nutzen würden, würden wir ja versuchen auf ein 7. (nicht vorhandenes) Element zuzugreifen.

Mfg Jannick (L1nd)

Woher ich das weiß:eigene Erfahrung – Aktuelles Studium in angewandter Informatik
EinstNewt142 
Fragesteller
 29.04.2024, 19:58

Hätte man stattdessen auch einfach i<=zahlen.lenght schreiben können?

Weil genau das hat mich verwirrt i ist ja immer index also macht 5 ja absolut Sinn. Aber lenght ist doch immer due ANZAHL der elemente ohne Index:(

0
Suiram1  29.04.2024, 20:04
@EinstNewt142

Wenn du alle Items in einem Array durchgehen möchtest wird i <= zahlen.lenght nicht gehen, da dabei dann i im letzten Durchgang den Wert 6 hätte wobei es ja nur bis Index 5 geht. Um nun alle werte in einem Array durchzugehen muss die Bedingung in der For-Schleife i < zahlen.lenght sein.

0
EinstNewt142 
Fragesteller
 29.04.2024, 20:07
@Suiram1

Ja deswegen ja auch das < zeichen.

Das höchste element ist sechs, der letzte index ist 5

0