A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hdsjsql 中级黑马   /  2013-4-21 20:18  /  1725 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hdsjsql 于 2013-4-21 22:23 编辑

String中方法indexOf,在API中的描述为:
indexOfpublic int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引。

为什么参数列表中ch不是char类型的。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

6 个回复

倒序浏览
char也是整数类型。所以你懂的。``
回复 使用道具 举报
char型数据和int型0-255间的数据可以通用,其对应关系即为ASCII码。在API文档里也说了:参数:ch - 一个字符(Unicode 代码点)。
另外indexOf方法,有个参数为String类型的重载形式, public int indexOf(String str),如果你输入字符来找索引用这个方法更好点。
可以编个代码测试下
  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 String s = "abcdefghijk";
  6.                 System.out.println(s.indexOf("c"));
  7.                 System.out.println(s.indexOf(99));//c对应的ASCII表就是99
  8.         }
  9. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
同学!这个问题你不用太纠结!
ch - 一个字符(Unicode 代码点)。
你只要知道这个方法的作用是返回一个字符在这个字符串中第一次出现的索引就可以了
如果没有找到那就是-1

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
    因为在Java当中char类型是可以给int类型赋值的,是可以相互赋值的
首先int类型32个位(1个符号位+31个数值位) char类型16个位(16个数值位)
char data = 97;这样的赋值是没有错误的 这是用ascii编码来给char赋值

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
indexOfpublic int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。如果在此 String 对象表示的字符序列中出现值为 ch 的字符,则返回第一次出现该字符的索引(以 Unicode 代码单元表示)。对于 0 到 0xFFFF(包括 0 和 0xFFFF)范围内的 ch 的值,返回值是
this.charAt(k) == ch

就是在2个字节的范围内,char类型的数字和字母 总能转化成对应的整数类型int 数字。所以括号中输入的是字符在ascii码表中对应的整数。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
indexOf  public int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引。

这句话在API中对于参数ch也有介绍,ch - 一个字符(Unicode 代码点)。
int 可以用字符常量赋值,char也可以用整型常量赋值,它们之间的桥梁就是ASCII码,因为字符是与ASCII一一对应的。
API的作者怎么写咱们就怎么用就行了

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马