2015-03-27 4 views
1
String s = "Hola"; 
System.out.println(s.substring(4)); 

4 - за гранью, но ошибки не выбрасываются.Почему этот код не выдает ошибку в Java?

Почему?

Заранее спасибо.

+0

Что говорит джавадок? –

+1

"IndexOutOfBoundsException - если beginIndex отрицательный или больше длины этого объекта String." из [API] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#substring (int)). 4 не больше длины строки. – adamdc78

+1

* "IndexOutOfBoundsException, если * {@code beginIndex} отрицательный или ** больше длины ** этого объекта {@code String}." * ... – MadProgrammer

ответ

5

Подумайте об аргументе 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

Индекс строк начинается с 0, а не 1. Так, например, в строке «Hola» ,

индекс 0 будет представлять собой Н

индекс 1 будет о

индекс 2 л бы

индекс 3 будет

Обратите внимание, что индекса нет 4. Вот почему вы получаете сообщение об ошибке. вместо этого, изменить его на

System.out.println(s.substring(3)); 
Смежные вопросы