Por que "fora do intervalo" não é lançado para 'substring (startIndex, endIndex)'
Em Java, estou usando osubstring()
método e não sei por que não está lançando um erro "fora do índice".
A cordaabcde
O índice começa de 0 a 4, mas osubstring()
O método usa startIndex e endIndex como argumentos, com base no fato de que eu posso chamar foo.substring (0) e obter "abcde".
Então, por que a substring (5) funciona? Esse índice deve estar fora do intervalo. Qual a explicação?
/*
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));
Este código gera:
abcde
bcde
cde
de
e
//foo.substring(5) output nothing here, isn't this out of range?
Quando substituo 5 por 6:
foo.substring(6)
Então eu recebo o erro:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: -1