问答详情
源自:2-5 认识 Java 中的 StringBuilder 类

string indexOf(int ch) 为什么我的返回值总是-1

package test;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "sdsds5dsjdghsl";
		int ch = 5;
		System.out.println(s.indexOf(ch));
	}
}

http://img.mukewang.com/58430a6200011f8c08020342.jpg

提问者:一家之煮 2016-12-04 02:09

个回答

  • 慕粉4369798
    2016-12-04 10:18:09
    已采纳

    返回-1表示没有找到,你定义的ch是int型,indexof括号里的int值是对应字符的ascii码的值,而字符串里没有,所以返回-1

  • qq_itsmylife_12
    2017-02-23 19:35:24

    Q】为什么indexOf(int ch)方法中的参数是整形的,而在用的时候却是char型的如

    public class Test
    {
    public static void main(String[] args){

    String s1=new String("hello");

    System.out.println(s1.indexOf('e'))
    }

    【K】
    首先int类型32个位(1个符号位+31个数值位) char类型16个位(16个数值位)
    char data = 97;这样的赋值是没有错误的 这是用ascii编码来给char赋值 
    Java当中 一个较小数据类型是直接可以赋值给大数据类型的而且在参数传递的时候同理,你可以写这样一行代码:
    int data = 'a'; //或者:
    char c = 'e'
     所以Java当中在参数匹配的时候是可以用char类型参数匹配int类型参数的定义的
    s1.indexOf('e')等价于s1.indexOf(101) 在这里用e的ASCII编码来匹配int类型参数


    在Java中,查阅API,还有重载函数 int indexOf(String str):
    所以哪怕你是s1.indexOf(“e”)都不会有问题。


  • Lee丶GX
    2017-02-22 14:37:27

    int ch = '5';

  • KenKingwq
    2017-01-03 19:25:55

    查找的是字符,每个字符是有对应的ascii码值的。

  • guitar狂魔
    2016-12-07 23:55:10

    s.indexOf(5)表示s字符串里ascii值为5的字符出现的位置,但是首先ascii=5对应的并不是一个字符,它在s中显然没有出现,当找不到所查字符串时,返回-1。

    indexOf()的正常使用方法是indexOf(String,int),返回String字符串在对象中从左往右数,从int位置开始的下一个出现位置的值,int的缺省值为0。