was bedeutet in Java Z.B (a.length-1;....a[ i - 1];....a[a.length-1])?

3 Antworten

a.length - 1 steht für die Anzahl der Elemente - 1. Würdest du das subtrahieren der eins weglassen würdest du versuchten einen Speicherwert der dem Array nicht zugewiesen ist auszulesen oder gar zu verändern #bufferOverflow. Arrays beginnen mit dem index 0.

a ist in dem Fall das Array, i der aktuelle index in der (ich vermute mal) for Schleife.

Hallo Anas111,

a.length-1 ändert am Array selbst nichts, würde es in einem 'Syso' stehen würdest du die Länge des Arrays -1 ausgegeben bekommen, hier vermutlich 4.

a[i-1] würde die Länge des Arrays auf ein weniger des Wertes in i setzen, sagen wir mal die Variable i wäre 4, dann würde der Array eine Länge von 3 besitzen.

a[a.length-1] würde ebenfalls die Länge des Arrays um 1 verkürzen, hierbei nimmst du die Array Länge und rechnest sie mit -1 zusammen und legst sie dann als Array Länge fest. Wenn der Array vorher die Länge 5 hätte, hätte er hier nach nur noch die Länge 4.

Mfg

TOminerTV

Woher ich das weiß:Studium / Ausbildung

Anas111 
Fragesteller
 28.12.2018, 17:26

ist auch ( a.length - 1; = a[a.length - 1]; ) ? ?

0
TOcrafterHD  29.12.2018, 10:29
@Anas111

Nein, a.length-1 würde ohne weiteres keine Wirkung haben, wie ich oben beschrieben habe ist das nur eine Ausgabe der Länge. Im Gegensatz dazu ist a[a.length-1] eine Zuweisung, du nimmst die Ausgabe a.length-1 und setzt das Ergebnis davon als Lenge vom Array a[].

Beispiel:

a[5]; //Array deklaration

a.length-1 //Array Länge -1 ausprobieren

a[5] // Ergebnis von dem Bespiel oben

a[a.length] //Array Länge setzen in dem man sich die Array Länge -1 geben lässt (5-1 = 4)

a[4] // Ergebnis des zweiten Bespiels, es würde so nicht zu sehen sein, aber das würde passieren wenn du den Code in dieser Reihenfolge ausführst.

Mfg

TOminerTV

1
Anas111 
Fragesteller
 09.07.2019, 13:29
@TOcrafterHD

Könntest du mir vielleicht wieder in einer identischen Frage helfen: Was ist der Unterschied zwischen

arr[ i++ ], arr[ i ] und arr[ ++i ] ?

Ich freue mich wieder auf deine Antwort.

0
TOcrafterHD  11.07.2019, 22:35
@Anas111

Zu dem Inkrement habe ich diesen Satz hier, also du inkrementierst den Counter i auf jeden Fall (array[++i] pre-increments i, then will access array[i]. array[i++] will access array[i] then post-increment  i. These are basic cases for pre- and post-increment. You can write a very simple test program to demonstrate this.)

Mit arr[i] greifst du auf das Element beispielsweise ein String.

Alle Fälle funktionieren wie in deiner alten Frage, der Unterschied ist das Counter meistens in Schleifen verwendet werden, wenn du zum Beispiel eine for(int i=0; i <= 10; i++)

Schleife hast, kannst du so auf Elemente des Arrays zugreifen.

1

a.length ist die Länge des Arrays. D.h. es hat a.length Elemente. Folglich ist a.length-1 die Differenz aus a.length und 1. D.h. raus kommt der Index des letzten Elementes, da der erste Index 0 ist.

Woher ich das weiß:Studium / Ausbildung – Informatik studiert und mit PCs & Technik beschäftigt