В Java я использую метод substring()
, и я не уверен, почему он не выбрасывает ошибку "из индекса".
Строка abcde
имеет начало индекса от 0 до 4, но метод substring()
принимает startIndex и endIndex как аргументы, основанные на том, что я могу вызвать foo.substring(0) и получить "abcde"
Тогда почему работает подстрока (5)? Этот индекс должен быть вне пределов досягаемости. Может ли кто-нибудь объяснить мне?
/*
1234
abcde
*/
String foo = "abcde";
System.out.println(foo.substring(0));
System.out.println(foo.substring(1));
System.out.println(foo.substring(2));
System.out.println(foo.substring(3));
System.out.println(foo.substring(4));
System.out.println(foo.substring(5));
Этот код выводит:
abcde
bcde
cde
de
e
//foo.substring(5) output nothing here, isn't this out of range?
Когда я заменю 5 на 6:
foo.substring(6)
Затем я получаю ошибку:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: -1