Woran erkennt man am Code, dass man in Java bei array den Index meint und nicht die Zahl der "Schublade"?

4 Antworten

Das ist bei Arrays und Listen eigentlich immer so. Java (und viele andere Programmiersprachen auch) fangen bei Null an zu zählen, das heißt, dass das erste Element den Index 0 hat, das zweite den Index 1 usw.

Woher ich das weiß:eigene Erfahrung

Das Array bietet dir für den Zugriff auf seine Elemente nur eine Schnittstelle:

myArray[...]

Diese Schnittstelle erwartet stets den Indexwert. Solltest du einen Wert außerhalb des Indexbereich angeben, wird dir das Programm einen Laufzeitfehler zurückgeben.

Wenn du an anderen Stellen deines Codes nicht mit dem Indexwert arbeiten möchtest, musst du bei Kommunikation mit dem Array umrechnen.

Beispiel:

int last = myArray.length;
System.out.println(myArray[last - 1]);

Für solche Fälle solltest du dann auch darauf achten, sehr klare Namen zu wählen. Im besten Fall arbeitest du von Beginn an immer mit dem Indexwert.

int lastIndex = myArray.length - 1;
System.out.println(myArray[lastIndex]);

Im Reden/Schreiben über die Sprache wäre es ebenfalls vorteilhaft, sich stets klar auszudrücken.

Beispiel:

Das dritte Element im Array hat den Index 2.

Weil es ein eindimensionaler Array ist.

Position = Index + 1

Array[3] stellt demnach die 4. Stelle im Array dar. Und da du nur eine Schublade hast, gibt es hier nicht viel mehr.

Anders verhält es sich bei zwei(mehr-)dimensionalen Arrays.

String[][] zeug = {

{ "1", "2", "3"},

{ "4" ,"5", "6" }

};

Hier hast du nun deine zwei Schubladen.

zeug[0][1] ergibt "2"

zeug[1][2] ergibt "6"

Woher ich das weiß:Berufserfahrung – > 20 Jahre in der Softwareentwicklung

Weil der erste Index immer 0 ist.

Daher hat das 4. Element auch immer den Index 3. Das muss man nicht "erkennen", sondern einfach wissen. Das ist auch in den meisten Programmiersprachen identisch, es gibt nur wenige Ausnahmen.

Woher ich das weiß:Berufserfahrung – Tätigkeit als Webentwickler in einer Digitalagentur
EinstNewt142 
Fragesteller
 29.04.2024, 18:52

Nein, so mein ich das eigentlich nicht. Ich mein halt woher man weiß dass mit array[3] der Index 3 gemeint ist und nicht die Schublade 3. Verstehst du? Also mir ist diese Regel schon klar...

0
jo135  29.04.2024, 18:55
@EinstNewt142

Was soll eine "Schublade" sein, und was genau ist nun dein Problem?

0
EinstNewt142 
Fragesteller
 29.04.2024, 18:59
@Suiram1

Aber bei int [] zahlen= new int [30]

Ist jetzt die Länge 30 gemeint und nicht der index 30.

0
Suiram1  29.04.2024, 19:01
@EinstNewt142

Das ist die Länge. Wenn du ein Item mit array[i] abrufst dann ist immer der Index gemeint. Wenn ein neues array initialisierst, dann ist es die Länge.

0
EinstNewt142 
Fragesteller
 29.04.2024, 19:03
@Suiram1

Also muss quasi immer ein i stehen damit der Index gemeint ist? Aber bei array[3]=10 ist das irgendwie nicht der Fall...

0
Suiram1  29.04.2024, 19:04
@EinstNewt142

Nein. Das i habe ich nur als Platzhalter verwendet. Da kommt natürlich der Index hin den du abrufen möchtest.

1
EinstNewt142 
Fragesteller
 29.04.2024, 19:08
@Suiram1

Achso, dankee:)) und ist array.lenght bei einem max. Index von 5 sechs?

Also ist das die Gesamtzahl der Schubladen?

0
Suiram1  29.04.2024, 19:12
@EinstNewt142

Ja. Wenn ich mich nicht irre, dann müsste es so sein, dass du nur beim Abrufen des Wertes den Index brauchst und sonst die Anzahl der Werte.

0
Ireeb  29.04.2024, 21:16
@EinstNewt142

Um bei deinem Schubladen-Bild zu bleiben:

Egal, wie viele Schubladen wir haben, die unterste Schublade hat immer die Nummer (Index) 0, und von da aus wird hochgezählt. Stell dir einfach einen Schrank vor, bei dem auf der untersten Schublade eine 0 aufgedruckt ist, auf der darüber eine 1, darüber die 2, und so weiter. Jede Schublade hat eine Nummer - das ist der Index.

Wenn du nun jemanden bitten möchtest, für dich etwas aus dem Schrank zu holen, macht es natürlich am meisten Sinn, die Nummer (also den Index) zu nennen, der auf der Schublade aufgedruckt ist. So läuft es an den meisten Stellen beim Programmieren. Man benutzt den Index, um auf die "Schubladen" (eigentlich: Elemente) zuzugreifen.

Anders sieht es natürlich aus, wenn du einen neuen Schrank bestellen willst, oder wissen willst, wie viele Schubladen ein Schrank hat. In dem Fall ist es egal, wie die Schubladen nummeriert sind.

Wenn du new int [30] schreibst, dann bestellst du einen Schrank mit 30 Schubladen. Die erste ist trotzdem mit 0 beschriftet und die letzte mit 29, aber es sind trotzdem 30 Schubladen.

Gleiches, wenn es um die Länge geht. Auch wenn der Schrank von 0 bis 29 geht, sind das 30 Schubladen.

In beiden Fällen geht es aber eben gar nicht um die Schubladen selbst oder was in ihnen ist, sondern um den Schrank, das Array.

Die Frage, die du dir also stellen musst, ist, ob es gerade um den Schrank als ganzes geht (z.B. wenn du eben ein neues Array erstellst oder wissen willst, wie viele Elemente es hat.), oder ob du gezielt auf eine Schublade zugreifen willst, also ein einzelnes Element auslesen oder schreiben willst, da musst du dann nach dem Index gehen.

1
EinstNewt142 
Fragesteller
 29.04.2024, 21:32
@Ireeb

Bei der Länge müsste ich doch so fragen:

Int laenge= array.length

Sytem.out.printIn ( array.lenght;" " );

0
Ireeb  30.04.2024, 13:40
@EinstNewt142

Genau, array.length

Und das zeigt auch, dass es hier um eine Eigenschaft des Arrays geht, diese also nicht direkt mit dem Indexen zusammenhängt.

In anderen Programmiersprachen kann man übrigens auch Arrays mit "Löchern" haben, dann kann es eben sein, dass die Länge und die Indexe plötzlich gar nicht mehr zusammenpassen. Java allerdings erlaubt das nicht, hier sind die Indexe eben immer durchgehend und damit der erste Index immer 0 und der letzte entspricht der Länge minus 1.

0