String中indexOf()方法的解析
来源:互联网 发布:各种下载软件的软件 编辑:程序博客网 时间:2024/06/10 16:54
在使用String中indexOf()方法的时候,我们知道如果要是传入一个子字符串作为参数的话类似"from",则这个方法就返回此"from"子字符串第一次在此字符串中出现的位置,即返回此字符串中第一个"from"子字符串中字符"f"的位置。
对于此方法忽然有点兴趣,因此我决定查看一下我当前使用的JDK1.7中的源码,其核心代码如下:
static int indexOf(char[] source, int sourceOffset, int sourceCount,
char[] target, int targetOffset, int targetCount,
int fromIndex) {
......
char first = target[targetOffset];
int max = sourceOffset + (sourceCount - targetCount);
for (int i = sourceOffset + fromIndex; i <= max; i++) {
/* 查找子字符串的第一个字符,如果第一个字符都没有出现,则此字符串中不包含这个子字符串 */
if (source[i] != first) {
while (++i <= max && source[i] != first);
}
/* 查找到第一个字符,则继续查找剩下的字符 */
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为止。
其实,这个方法很简单,但是其中还是有很多值得我学习的东西。因此,以此文作为记录。
- String中indexOf()方法的解析
- 解析java语言中String方法之indexOf
- String 中 的indexOf()
- java的indexOf(String.indexOf 方法)
- java的indexOf(String.indexOf 方法)
- C#中String.IndexOf 方法
- String对象的indexOf方法
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- ASP.NET中String.IndexOf 方法的使用
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- C#中String类的几个方法(IndexOf、LastIndexOf、Substring)
- 使用QProcess调用另一个程序
- Javascript的Map对象
- keepalived+nginx+tomcat高可用
- html table之 全选,全不选
- 【LeetCode-337】House Robber III
- String中indexOf()方法的解析
- 关于strutst2 select标签的disable属性的设置和移除
- Rational Rose2007(v7.0)下载地址、安装及激活详解教程(图)
- 全球30篇最热门的计算机视觉和深度学习论文
- wifi定位方法
- 远程操作db2数据库表
- java垃圾收集描述
- uboot移植准备四
- CodeIgniter框架大小写问题