java String.indexof源码分析
2015-10-10 16:52
579 查看
public int indexOf(String str) { return indexOf(str, 0);}
public int indexOf(String str, int fromIndex) {
return indexOf(value, 0, value.length,
str.value, 0, str.value.length, fromIndex);
}
//source 字符串value sourceOffset 0 sourceCount 字符串length target 查询条件value
//targetOffset 0 targetCount 查询条件长度 fromIndex 下表
static int indexOf(char[] source, int sourceOffset, int sourceCount, char[] target, int targetOffset, int targetCount, int fromIndex) {
//如果查询下表大于等于字符串长度
//如果查询条件长度==0就是""返回字符串长度等同于length()
//如果有查询条件返回-1 if (fromIndex >= sourceCount) { return (targetCount == 0 ? sourceCount : -1); }
//没有查询坐标就是0 if (fromIndex < 0) { fromIndex = 0; }
//如果没有查询条件返回下标 if (targetCount == 0) { return fromIndex; } //字符数组 总是返回第一个 char first = target[targetOffset];
//int max = 0 +(总长度-查询条件的长度) int max = sourceOffset + (sourceCount - targetCount); for (int i = sourceOffset + fromIndex; i <= max; i++) { /* Look for first character. */ if (source[i] != first) {//判断查询条件条件在不在source中以便循环 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;//直接返回-1 }
相关文章推荐
- PAT初级题目1011A+B和C(Java实现)
- Java enum枚举 测试例子
- Eclipse MAT 内存分析工具
- 将Java程序与数据库进行连接的操作方法
- 解决eclipse中出现Resource is out of sync with the file system问题
- 从Eclipse迁移到Android studio
- JAVA 骰子游戏
- 【Android学习总结】之eclipse工程目录结构说明及使用
- 【Android学习总结】之eclipse工程目录结构说明及使用
- Java GC 调试手记
- <JavaSE学习笔记>面向对象(1):类与对象的概念
- Java I/O系统
- Java集合框架(JCF)
- 用Java编写的一个小计算器
- java类中为什么设置set和get…
- 用Java做的模拟“双色球”机选号码
- Java中用面向过程做的小“ATM”机
- Java基础语法
- 初识JAVA
- 用Java编写的一个小记事本