黑马程序员技术交流社区

标题: 关于String中方法indexOf的问题 [打印本页]

作者: hdsjsql    时间: 2013-4-21 20:18
标题: 关于String中方法indexOf的问题
本帖最后由 hdsjsql 于 2013-4-21 22:23 编辑

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

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

作者: 殇_心。    时间: 2013-4-21 20:34
char也是整数类型。所以你懂的。``
作者: 崔自成    时间: 2013-4-21 20:37
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. }
复制代码

作者: $love    时间: 2013-4-21 20:37
同学!这个问题你不用太纠结!
ch - 一个字符(Unicode 代码点)。
你只要知道这个方法的作用是返回一个字符在这个字符串中第一次出现的索引就可以了
如果没有找到那就是-1
作者: 极限冰风    时间: 2013-4-21 20:38
    因为在Java当中char类型是可以给int类型赋值的,是可以相互赋值的
首先int类型32个位(1个符号位+31个数值位) char类型16个位(16个数值位)
char data = 97;这样的赋值是没有错误的 这是用ascii编码来给char赋值
作者: 聖手`书生    时间: 2013-4-21 21:01
indexOfpublic int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。如果在此 String 对象表示的字符序列中出现值为 ch 的字符,则返回第一次出现该字符的索引(以 Unicode 代码单元表示)。对于 0 到 0xFFFF(包括 0 和 0xFFFF)范围内的 ch 的值,返回值是
this.charAt(k) == ch

就是在2个字节的范围内,char类型的数字和字母 总能转化成对应的整数类型int 数字。所以括号中输入的是字符在ascii码表中对应的整数。
作者: 本人已死    时间: 2013-4-21 22:05
indexOf  public int indexOf(int ch)返回指定字符在此字符串中第一次出现处的索引。

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






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2