#java
Вопрос:
На яве,
String s = "a";
String ss = s.substring(1);
System.out.println(ss.length());
Мне было интересно, почему код не вызывает ошибки, и результат показывает, что длина строки ss равна 0.
Комментарии:
1. Хабе вы читали документацию
String::substring
?2.
String t = "";
это законно. ПустоеString
существует.
Ответ №1:
Ваша строка "a"
содержит только 1 символ в позиции 0
, поэтому substring(int)
вы должны передать первую позицию, с которой будет начинаться новая строка, пока она не закончится. Вы прошли 1
, но 1
в этой строке нет символа с позицией, но вы не получите исключения, потому что эта функция вернет пустую строку вместо исключения. Если вам нужно исключение, просто проверьте длину строки:
Читайте документы: https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html#substring(инт)
Ответ №2:
Пожалуйста, ознакомьтесь с документацией: https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/lang/String.html#substring(int)
Это вызовет исключение IndexOutOfBoundsException — если значение beginIndex отрицательное или больше длины этого строкового объекта.
длина строки переменной «s» равна 1, и здесь вы ставите beginIndex=1, что не больше длины строки. Вот почему он не делает никаких исключений. Попробуйте использовать beginIndex=2, вы получите исключение IndexOutOfBoundException.