私は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
は、sourceOffset
は2
で、"abcdedefg"
あるsourceCount
が3
で、 、私はこのことから "d" を検索したい場合は、 は、なぜ私は、インデックス4から検索できないのですか?
/**
* Ps:sourceCount
が文字列全体の長さを意味する場合は、source.length
*を代わりに使用してください。
*/
*写真*のコード、投稿**コード**は投稿しないでください。理由:http://meta.stackoverflow.com/q/285551/157247 –
テキスト自体ではなく、コードやエラーの画像を投稿したので、私はこの質問をdownvotedしました。ボランティアや将来の来場者を含め、誰もが使用することが困難な画像です。イメージを削除して関連するテキストに置き換えた場合、私はダウンボートを引っ込めることを検討します。参照:[質問するときにSOのコードをSOにアップロードしないとなぜですか?](https://meta.stackoverflow.com/questions/285551/why-not-to-upload-images-of-code-on-so - 質問の際に) –
私はこれを知らないと申し訳ありません。私は変更しています。 – Saber