2015-06-10 7 views
1

Я новичок в программировании JAVA и в настоящее время делает практиковаться код через веб-сайт, я хотел бы получить некоторую ясность в нижеElse оператор выполняет

подарил:

String str = "Jason"; 
str.substring(4,5); 

result = "n" 

Вопрос: Метод substring параметры (begin_index, end_index) , , но нет индекса 5 для переменной str. делает JAVA автоматически -1, когда дело доходит до метода длины строки?

+4

Возможно, вы захотите переименовать свой вопрос. То, что вы просите, не имеет ничего общего с какой-либо другой категорией или условной логикой любого рода. – azurefrog

ответ

6

Метод substring() является «включительно эксклюзивным».

Это означает, что в Jason, когда вы предоставили (4, 5) в качестве параметров, он содержит индекс 4 (n), но не содержит индекса 5. Индекс 5 не существует, но он является эксклюзивным, так что все в порядке.

Обратите внимание, что .length НЕ индексируется нулем. Если вы попытаетесь получить .length, вы получите 5-строчные позиции символов. Нулевые индексы. Так что Джейсон индексируется бы 0 на J и 4 на N, даже если длина 5.

1

Смотрите документацию по API из substring(int beginIndex, int endIndex)

Параметры:

beginIndex - начальный индекс, включительно.

endIndex - конечный индекс, исключая.

Итак, что же она делает это принимает символы в строке, начиная с beginIndex до, но исключая endIndex.

Это на самом деле общий способ сделать это. Преимущество включения индекса begin inclusive и исключительного эксклюзивного индекса заключается в том, что легко вычислить длину подстроки - это endIndex - beginIndex, и вам не нужно думать о добавлении или вычитании 1 для включения/исключения.

Смежные вопросы