El método de subcadena en la clase String alcanza el índice que no debe [duplicar]
Esta pregunta ya tiene una respuesta aquí:
¿Por qué no está "fuera de rango" para 'subcadena (startIndex, endIndex)' 6 respuestasPido disculpas si el título no está claro.
Ahora, el índice de cadenas comienza en 0. Entonces, por ejemplo:
Index 0 1 2 3 4
String H E L L O
En este caso, el último índice es 4.
Si intentara hacer algo como esto:
System.out.println("hello".charAt(5));
Lanzaría una 'excepción de índice fuera de límites', como debería ser.
Sin embargo, si intento ejecutar el siguiente código:
System.out.println("hello".substring(5));
¡Corre! Escribí un código similar, lo noté más tarde y no pude resolverlo.
Finalmente, la pregunta es: ¿cómo es posible que podamos alcanzar este índice que no deberíamos? Nos permite escribir:
stringObj.substring(stringObj.length());
y no parece muy seguro ya que stringObj.length () nos devuelve un número entero que es uno más que el último índice.
¿Se hace intencionalmente y esto tiene un propósito? Si es así, ¿cuál es este propósito y cuál es el beneficio que trae?