나는 String.class
의 소스 코드를 읽었습니다.
indexOf()
방법에서 나는 내가 이해할 수없는 것을 본다.
여기 indexOf()
코드 스 니펫 String.class
소스 코드입니다.왜 코드는이 방법으로 String.class의 indexOf() 메서드를 작성합니까?
/**
* Code shared by String and StringBuffer to do searches. The
* source is the character array being searched, and the target
* is the string being searched for.
*
* @param source the characters being searched.
* @param sourceOffset offset of the source string.
* @param sourceCount count of the source string.
* @param target the characters being searched for.
* @param targetOffset offset of the target string.
* @param targetCount count of the target string.
* @param fromIndex the index to begin searching from.
*/
static int indexOf(char[] source, int sourceOffset, int sourceCount,
char[] target, int targetOffset, int targetCount,
int fromIndex) {
if (fromIndex >= sourceCount) {
return (targetCount == 0 ? sourceCount : -1);
}
if (fromIndex < 0) {
fromIndex = 0;
}
if (targetCount == 0) {
return fromIndex;
}
char first = target[targetOffset];
int max = sourceOffset + (sourceCount - targetCount);
for (int i = sourceOffset + fromIndex; i <= max; i++) {
/* Look for first character. */
if (source[i] != first) {
while (++i <= max && source[i] != first);
}
/* Found first character, now look at the rest of v2 */
if (i <= max) {
int j = i + 1;
int end = j + targetCount - 1;
for (int k = targetOffset + 1; j < end && source[j]
== target[k]; j++, k++);
if (j == end) {
/* Found whole string. */
return i - sourceOffset;
}
}
}
return -1;
}
여기서 코드를 이해할 수 없습니다.
if (fromIndex >= sourceCount) {
return (targetCount == 0 ? sourceCount : -1);
}
source String
이 "abcdedefg"
경우, sourceOffset
는, sourceCount
이 3
입니다 2
내가이에서 "D"를 검색하려면, 는 왜 인덱스 4에서 검색 할 수 없습니다?
/**
* Ps : sourceCount
이 전체 문자열의 길이를 의미하는 경우 source.length
*을 대신 사용하지 않으시겠습니까? */
코드 * 사진 *, ** 코드 **를 게시하지 마십시오. 이유 : http://meta.stackoverflow.com/q/285551/157247 –
텍스트 자체가 아닌 코드 및/또는 오류의 이미지를 게시했기 때문에 나는이 질문을 저지했습니다. 자원 봉사자와 미래의 방문자를 포함하여 모든 사람이 이미지를 사용하기가 더 어려워집니다. 이미지를 제거하고 관련 텍스트로 바꾸면 내 downvote를 철회하는 것을 고려할 것입니다. See : [질문 할 때 SO의 코드 이미지를 업로드하지 않으시겠습니까?] (https://meta.stackoverflow.com/questions/285551/why-not-to-upload-images-of-code-on-so) - 질문 할 때) –
죄송합니다. 잘 모르겠습니다. 나는 바뀌고있어. – Saber