Substring-Methode in der String-Klasse erreicht den Index, den sie nicht [duplizieren] soll

Diese Frage hat hier bereits eine Antwort:

Warum ist "außerhalb des Bereichs" nicht für "Teilzeichenfolge (StartIndex, EndIndex)" geworfen 6 answers

Ich entschuldige mich, wenn der Titel nicht klar ist.

Now, in Strings beginnt der Index bei 0. Also zum Beispiel:

Index    0   1   2   3   4
String   H   E   L   L   O

In diesem Fall ist der letzte Index 4.

Wenn ich versuchen würde, so etwas zu tun:

System.out.println("hello".charAt(5));

Es würde eine "Index Out Of Bounds Exception" auslösen, wie es sollte.

Allerdings, wenn ich versuche, den folgenden Code auszuführen:

System.out.println("hello".substring(5));

Es läuft! Ich habe ähnlichen Code geschrieben, dies später bemerkt und konnte es nicht herausfinden.

Eventually, die Frage ist, wie ist das möglich, dass wir diesen Index erreichen können, den wir nicht sollten? Es erlaubt uns zu schreiben:

stringObj.substring(stringObj.length());

und es sieht nicht sehr sicher aus, da stringObj.length () uns eine Ganzzahl zurückgibt, die um eins höher ist als der letzte Index.

Ist es absichtlich gemacht und hat dies einen Zweck? Wenn ja, zu welchem Zweck und mit welchem Nutzen?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage