Метод подстроки в классе String достигает индекса, который он не должен [дублировать]

На этот вопрос уже есть ответ здесь:

Почему «вне диапазона» не выбрасывается для «подстроки (startIndex, endIndex)» 6 ответов

Я прошу прощения, если название не ясно.

Теперь в строках индекс начинается с 0. Так, например:

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

В этом случае последний индекс равен 4.

Если бы я попытался сделать что-то вроде этого:

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

Это выкинуло бы исключение «Индекс вне границ», как и должно быть.

Однако, если я пытаюсь запустить следующий код:

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

Это работает! Я написал подобный код, заметил это позже и не мог понять это.

В конце концов, вопрос заключается в том, как это возможно, что мы можем достичь этого индекса, мы не должны? Это позволяет нам писать:

stringObj.substring(stringObj.length());

и это выглядит не очень безопасно, так как stringObj.length () возвращает нам целое число, которое на единицу больше, чем последний индекс.

Это сделано намеренно и имеет ли это цель? Если да, то какова эта цель и какую пользу она приносит?

Ответы на вопрос(4)

Ваш ответ на вопрос