黑马程序员技术交流社区

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

作者: 袁培育    时间: 2012-4-17 15:28
标题: 关于String的indexOf的问题
如题,在jdk帮助文档里的String类中用这样一个方法家叫indexOf(),他有很多重载方法,其中有两个是indexOf(String str)和indexOf(String str, int fromIndex),就是说参数类型应该是String,可是毕老师在13天第02节视频里用这两个方法时传入的是char类型的参数(因为毕老师用的是单引号而不是双引号),但没有报错而且正确运行了,为什么呀?难到是单引号可以表示字符串?
作者: 张卯    时间: 2012-4-17 16:02
int indexOf(int ch)
          返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, int fromIndex)
          返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
其实是用的上面两个重载方法,char和int在ASCII编码中是对应的。
作者: 葛尧    时间: 2012-4-17 16:21
字符型数据 是按编码对应的二进制存储的,
所以 'a'  ==  97 ==  61(hex)  是一样的,
你自己试试int ch = 'a' 打印一下就知道了
作者: 伊文龙    时间: 2012-4-17 16:28
这里调用的是 indexOf(int ch)  方法。在java中,字符型数据和int型数据可以通过Unicode 码相互转换。
这是我写的一个例子,希望对你有用:

  1. public class StringTest {

  2. public static void main(String[] args){

  3. function('a');
  4. }

  5. public static void function(int ch){

  6. String str = "this is a string !";
  7. System.out.println(str.indexOf(ch));
  8. }
  9. }
  10. /*输出:
  11. * 8
  12. */
复制代码

作者: 袁培育    时间: 2012-4-17 20:02
张卯 发表于 2012-4-17 16:02
int indexOf(int ch)
          返回指定字符在此字符串中第一次出现处的索引。
int indexOf(int ch, i ...

是不是说如果传入的是一个字符型的数据编译时会自动变为int型
作者: 张卯    时间: 2012-4-18 00:39
袁培育 发表于 2012-4-17 20:02
是不是说如果传入的是一个字符型的数据编译时会自动变为int型

嗯~对头~




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