java String indexof 的jdk源码实现

java String indexof 的jdk源码实现publicintindexOf(Stringstr,intfromIndex){returnindexOf(value,offset,count,str.value,str.offset,str.count,fromIndex);}/***Codeshar…

java String indexof 的jdk源码实现public int indexOf(String str, int fromIndex) {

return indexOf(value, offset, count,

str.value, str.offset, str.count, fromIndex);

}

/**

* 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) {//开始出小于0,则从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;

}今天的文章java String indexof 的jdk源码实现分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/32151.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注