¿Por qué no está "fuera de rango" para 'subcadena (startIndex, endIndex)'
En Java estoy usando elsubstring()
método y no estoy seguro de por qué no arroja un error "fuera de índice".
La cuerdaabcde
tiene un índice de inicio de 0 a 4, pero elsubstring()
El método toma startIndex y endIndex como argumentos basados en el hecho de que puedo llamar a foo.substring (0) y obtener "abcde".
Entonces, ¿por qué funciona la subcadena (5)? Ese índice debe estar fuera de rango. ¿Cuál es la explicación?
/*
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 genera:
abcde
bcde
cde
de
e
//foo.substring(5) output nothing here, isn't this out of range?
Cuando reemplazo 5 con 6:
foo.substring(6)
Entonces me sale un error:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: -1