String s = "Hola";
System.out.println(s.substring(4));
4 - за гранью, но ошибки не выбрасываются.Почему этот код не выдает ошибку в Java?
Почему?
Заранее спасибо.
String s = "Hola";
System.out.println(s.substring(4));
4 - за гранью, но ошибки не выбрасываются.Почему этот код не выдает ошибку в Java?
Почему?
Заранее спасибо.
Подумайте об аргументе String.substring()
как число символов в skip. Таким образом, пропуская 4 символа в "Hola"
, вы получите пустую строку.
"Hola".substring(0) => "Hola"
"Hola".substring(1) => "ola"
"Hola".substring(2) => "la"
"Hola".substring(3) => "a"
"Hola".substring(4) => ""
Самый низкий аргумент, для которого будет сгенерировано исключение на строке 4-символа 5.
Индекс строк начинается с 0, а не 1. Так, например, в строке «Hola» ,
индекс 0 будет представлять собой Н
индекс 1 будет о
индекс 2 л бы
индекс 3 будет
Обратите внимание, что индекса нет 4. Вот почему вы получаете сообщение об ошибке. вместо этого, изменить его на
System.out.println(s.substring(3));
Что говорит джавадок? –
"IndexOutOfBoundsException - если beginIndex отрицательный или больше длины этого объекта String." из [API] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring (int)). 4 не больше длины строки. – adamdc78
* "IndexOutOfBoundsException, если * {@code beginIndex} отрицательный или ** больше длины ** этого объекта {@code String}." * ... – MadProgrammer