Метод подстроки в классе 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 () возвращает нам целое число, которое на единицу больше, чем последний индекс.
Это сделано намеренно и имеет ли это цель? Если да, то какова эта цель и какую пользу она приносит?