如何知道indexOf(“字符”,整数)的结果是什么?

时间:2013-10-02 15:36:57

标签: java char indexof

我不明白为什么name.indexOf("d",4)在我的程序中打印8。我尝试将其他字母替换为“d”,但似乎总是打印一个随机数,我看不到任何模式来理解indexOf("character", integer)实际上在做什么,以及它是如何产生它的输出的。

import java.util.Scanner;
public class Practice {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String name;
    name = "abcdefghd";

    System.out.println(name.indexOf("d"));//3
    System.out.println(name.indexOf("cde"));//2
    System.out.println(name.indexOf("fe"));//-1
    System.out.println(name.indexOf("d", 4));//8
}

2 个答案:

答案 0 :(得分:4)

String#indexOf(String, int)方法在指定的String处或之后的索引处查找指定的int

所以

System.out.println(name.indexOf("d", 4));//8

in

name = "abcdefghd";
            ^ index 4

它开始在"d"中的索引4处查找String,即。在索引3的"d"之后。索引8中有"d"

答案 1 :(得分:3)

返回的值不是随机的,它在documentation

中有解释
  

从指定索引处开始,返回指定子字符串第一次出现的字符串中的索引。

     

返回的索引是k >= fromIndex && this.startsWith(str, k)的最小值k。如果不存在这样的k值,则返回-1。

以防万一:请记住,Java索引从0开始。