杰瑞科技汇

Java indexOf 返回值具体指什么?

indexOf 是 Java String 类(以及一些其他类,如 ArrayList)中的一个常用方法,其主要作用是查找某个子字符串或字符在字符串中首次出现的位置

Java indexOf 返回值具体指什么?-图1
(图片来源网络,侵删)

核心结论(一句话总结)

indexOf 方法返回的是目标子字符串或字符首次出现的起始索引(index),如果找不到,则返回 -1


详细说明

indexOf 方法有几种常见的重载形式,但它们的返回值规则是相同的。

int indexOf(String str)

查找参数字符串 str 在当前字符串中首次出现的位置。

  • 成功时:返回 str 的第一个字符在当前字符串中的索引,索引从 0 开始。
  • 失败时:如果当前字符串不包含 str,则返回 -1

示例代码:

Java indexOf 返回值具体指什么?-图2
(图片来源网络,侵删)
public class IndexOfExample {
    public static void main(String[] args) {
        String sentence = "Hello, welcome to the world of Java.";
        // 情况1:子字符串存在
        int index1 = sentence.indexOf("welcome");
        System.out.println("子字符串 'welcome' 的索引是: " + index1); // 输出: 7
        // 情况2:子字符串不存在
        int index2 = sentence.indexOf("Python");
        System.out.println("子字符串 'Python' 的索引是: " + index2); // 输出: -1
        // 情况3:查找单个字符
        int index3 = sentence.indexOf('J');
        System.out.println("字符 'J' 的索引是: " + index3); // 输出: 31
        // 情况4:查找不存在的字符
        int index4 = sentence.indexOf('z');
        System.out.println("字符 'z' 的索引是: " + index4); // 输出: -1
    }
}

int indexOf(String str, int fromIndex)

从指定的索引 fromIndex 开始,向后查找子字符串 str 的首次出现位置。

  • 成功时:返回 str 的第一个字符在当前字符串中的索引。
  • 失败时:如果从 fromIndex 开始向后查找没有找到 str,则返回 -1

重要提示

  • fromIndex包含的,即查找会从 fromIndex 这个位置开始检查。
  • fromIndex 的值大于或等于字符串的长度,方法会直接返回 -1。
  • fromIndex 是负数,其行为与 0 相同(从开头查找)。

示例代码:

public class IndexOfFromIndexExample {
    public static void main(String[] args) {
        String sentence = "one two one three one";
        // 从索引 4 开始查找 "one"
        // 从 "two one three one" 中查找,"one" 出现在索引 7
        int index1 = sentence.indexOf("one", 4);
        System.out.println("从索引 4 开始查找 'one',结果是: " + index1); // 输出: 7
        // 从索引 10 开始查找 "one"
        // 从 "three one" 中查找,"one" 出现在索引 14
        int index2 = sentence.indexOf("one", 10);
        System.out.println("从索引 10 开始查找 'one',结果是: " + index2); // 输出: 14
        // 从索引 20 开始查找 "one" (索引 20 超出字符串长度)
        int index3 = sentence.indexOf("one", 20);
        System.out.println("从索引 20 开始查找 'one',结果是: " + index3); // 输出: -1
    }
}

int indexOf(int ch)int indexOf(int ch, int fromIndex)

这是查找单个字符的版本。ch 是字符的 Unicode 值。

  • 成功时:返回字符 ch 在字符串中首次出现的索引。
  • 失败时:返回 -1

示例代码:

public class IndexOfCharExample {
    public static void main(String[] args) {
        String str = "programming";
        // 查找字符 'g' 首次出现的位置
        int index1 = str.indexOf('g');
        System.out.println("字符 'g' 的首次索引是: " + index1); // 输出: 3
        // 从索引 4 开始查找字符 'g'
        int index2 = str.indexOf('g', 4);
        System.out.println("从索引 4 开始查找 'g',结果是: " + index2); // 输出: 10
    }
}

返回值 -1 的实际应用

返回 -1indexOf 方法最重要的特性之一,它提供了一种简单、优雅的方式来判断一个字符串是否包含另一个字符串,而无需使用正则表达式。

核心思想:

indexOf 的返回值不等于 -1,则表示包含;如果等于 -1,则表示不包含。

示例:判断用户输入是否合法

import java.util.Scanner;
public class ValidateInput {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个用户名(不能包含空格): ");
        String username = scanner.nextLine();
        // 检查 username 中是否包含空格 " "
        if (username.indexOf(" ") == -1) {
            System.out.println("用户名合法: " + username);
        } else {
            System.out.println("用户名非法:不能包含空格!");
        }
    }
}

在这个例子中,username.indexOf(" ") 会返回空格字符的索引,如果字符串中没有空格,它就会返回 -1,通过 == -1 的判断,我们就能清晰地知道用户是否输入了空格。


总结表格

方法签名 功能描述 成功返回值 失败返回值
indexOf(String str) 查找 str 在字符串中首次出现的位置。 str 的起始索引(int 类型)。 -1
indexOf(String str, int fromIndex) fromIndex 位置开始,查找 str 的首次出现位置。 str 的起始索引(int 类型)。 -1
indexOf(int ch) 查找字符 ch 在字符串中首次出现的位置。 ch 的索引(int 类型)。 -1
indexOf(int ch, int fromIndex) fromIndex 位置开始,查找字符 ch 的首次出现位置。 ch 的索引(int 类型)。 -1

记住这个核心规则:找到了就返回位置(从0开始),找不到就返回-1,这是理解和使用 indexOf 方法的基石。

分享:
扫描分享到社交APP
上一篇
下一篇