`
feilky
  • 浏览: 2997 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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 jdk 实例宝典源码

    - **String类**:Java中不可变的字符序列,广泛用于字符串操作,如`substring()`、`indexOf()`、`concat()`等。 - **Arrays类**:提供了对数组进行排序、复制、填充的操作,如`sort()`、`equals()`。 - **...

    Java源码解析——看优秀源码最能使人进步

    Java.lang.String类是Java语言中的一种基本数据类型,该类的定义、字段属性、构造方法、equals方法、hashCode方法、charAt方法、compareTo方法、concat方法、indexOf方法、replace方法、split方法、substring方法、...

    String_raw-源码.rar

    - `indexOf(String str)`/`lastIndexOf(String str)`:查找子字符串的首次出现或最后一次出现的索引。 - `concat(String str)`:连接两个字符串。 - `compareTo(String anotherString)`:比较两个字符串的字典...

    java String详解

    `String`类在JDK的源码中是用C++实现的,但其主要接口和方法都是在Java中定义和使用的。 通过以上知识点,我们可以更好地理解和使用Java中的`String`类,有效地处理字符序列并优化代码性能。在实际开发中,合理运用...

    Java编程教案&源码

    5. **字符串**:Java中的String类是不可变的,理解其特性和常用方法,如concat、substring、indexOf等。 6. **异常处理**:学习如何使用try-catch-finally结构来捕获和处理程序运行时可能出现的错误。 7. **集合...

    达内java课程源码

    5. **字符串操作**:Java中的String类是极其重要的,课程会讲解其特性和常用方法,如concat、substring、indexOf等。 6. **集合框架**:包括List、Set、Map接口和ArrayList、LinkedList、HashSet、HashMap等实现类...

    java基础18天学习内容源码

    6. **字符串处理**:Java中的String类是不可变的,学习其常用方法,如substring、concat、indexOf、replace等。 7. **集合框架**:学习List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)和Map(如...

    刘意老师的Java基础教学源码(第一天到第八天)

    6. **字符串操作**:"day07"可能涉及Java中String类的常用方法,如concatenation、substring、indexOf等,以及StringBuilder和StringBuffer的使用。 7. **IO流与文件操作**:"day08"可能会讲解输入/输出流的概念,...

    Java语言程序设计 基础篇-进阶篇源码

    4. **字符串操作**:Java中的String类,字符串的常用方法如concat、substring、indexOf等。 5. **异常处理**:了解try-catch-finally语句,异常类层次结构,以及如何自定义异常。 6. **输入输出流**:掌握I/O流的...

    Java面试题大全2023版.docx

    indexOf():返回指定字符的索引。charAt():返回指定索引处的字符。replace():字符串替换。trim():去除字符串两端空白。split():分割字符串,返回一个分割后的字符串数组。getBytes():返回字符串的 byte 类型...

    21天学java源代码

    5. **字符串处理**:Java的String类提供了丰富的字符串操作方法,如concatenation、substring、indexOf等,学习者应熟悉其用法。 6. **异常处理**:Java通过try-catch-finally语句块进行异常处理,学习者需要知道...

    疯狂Java讲义源码(第一部分)

    - **String类**:深入理解String类的不可变性,常见方法如length()、charAt()、substring()、indexOf()等。 - **StringBuilder与StringBuffer**:对比String类,学习可变字符串的实现和使用。 - **正则表达式**:...

    JAVA趣味学习

    7. **字符串处理**:String类在Java中广泛使用,理解它的不可变性、方法如concat、substring、indexOf等,以及StringBuilder和StringBuffer的使用,对编写高效代码非常重要。 8. **函数式编程**:Java 8引入了...

    java学习源码

    7. **字符串**:Java中的String类是不可变的,理解其特性和常用方法,如concat()、substring()、indexOf()等。 接下来,随着“01_base”的深入,可能会涵盖: 8. **面向对象编程**:这是Java的核心,包括类、对象、...

    JDK1.5新特性

    String类在JDK 1.5中得到了优化,新增了`substring()`的高效实现,以及`compareToIgnoreCase()`、`indexOf()`等方法。 13. **编译器警告**: JDK 1.5的javac编译器增加了对过时API和未初始化变量的警告提示,帮助...

    2021最新Java基础面试,0~1年小白专属,部分附源码分析.7z

    - 学习常用的字符串操作方法,如concat、substring、indexOf等。 8. **输入输出流**: - 了解IO流的分类:字节流和字符流,以及它们的读写操作。 - 掌握File类的使用,进行文件的创建、删除、重命名等操作。 - ...

    Java语言程序设计(基础篇)(进阶篇)课后代码

    7. **字符串处理**:学习String类的常用方法,如concat、substring、indexOf等。 8. **异常处理**:理解异常的概念,学习try-catch-finally语句的使用。 进阶篇则更深入地探讨了Java的高级特性: 1. **集合框架**...

    【中文】【JAVA2 SDK 类库详解】【RAR】

    提供了丰富的方法来处理字符串,如substring()、replace()、indexOf()等。 - **ArrayList 类**:实现了基于数组的列表接口,可以动态地改变其大小,适用于存储和检索大量数据的情况。 - **HashMap 类**:一种基于...

    java基础课件 基础教程

    7. **字符串处理**:了解String类的常用方法,如concat、substring、indexOf、replace等,并比较StringBuilder和StringBuffer的异同。 8. **异常处理**:理解Java的异常处理机制,学习try-catch-finally语句块,...

    java技术教程,书例

    5. **字符串处理**:Java中的String类提供了丰富的字符串操作方法,如concat、substring、indexOf、replace等,理解和熟练使用它们可以提高代码效率。 6. **输入/输出流**:Java的IO流用于处理数据的输入和输出,...

Global site tag (gtag.js) - Google Analytics