黑马程序员技术交流社区

标题: String 类中的一个小问题 [打印本页]

作者: 只想要一盏灯    时间: 2013-11-4 21:28
标题: String 类中的一个小问题
本帖最后由 只想要一盏灯 于 2013-11-4 21:37 编辑

复制代码
  1. public class Demo1
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 indexof();
  6.         }
  7.        
  8.         public static void sop(String s)//①
  9.         {
  10.                 System.out.println(s);
  11.         }
  12.         public static void indexof()
  13.         {
  14.                 String s = "abcdedcba";
  15.                
  16.                 sop(s.indexOf('d',3));//②
  17.         }
  18. }
复制代码
麻烦各位帮我看看,毕老师视频上有说是如果①用多态,引用超类object类中的对象的话,可以接收任何数据,这个我试了,确实OK。后面改为接收 String 类中的一个数据后也能成功。
但我改成了String类后,②这里提示错误,sop方法不适用于 int 参数:The method sop(String) in the type Demo1 is not applicable for the arguments (int)
麻烦童鞋们跟我说下为什么,要怎么改才能在①这里引用String类?就是我希望是①那里接收 String类,那样要怎么才能把代码改正确。

作者: 张秀威    时间: 2013-11-4 21:50
这很简单哪,你定义sop()的时候接收的类型只允许是Stirng类型的,所以当你在调用String中的方法indexOf(String str,int fromIndex)时,它返回的是一个指定子字符串在此字符串中第一次出现处的索引,它是一int类型的,所以是类型不匹配!
作者: 胡志翔    时间: 2013-11-5 09:06
API文档中这样描述indexOf()方法


此方法返回值类型是int型,并非是String类型,所以你的sop方法里只能接收String类型和这点冲突,所以报错。
要是想sop方法中参数是String类型的, 那么在之后的调用中往里传的参数要符合这个String类型才可以。

希望可以帮到你
作者: 只想要一盏灯    时间: 2013-11-5 10:36
张秀威 发表于 2013-11-4 21:50
这很简单哪,你定义sop()的时候接收的类型只允许是Stirng类型的,所以当你在调用String中的方法indexOf(Str ...

这个我知道啊,那意思就是要接收这个 i nt 的话,只能用超类是吧?
作者: 张秀威    时间: 2013-11-5 22:59
嗯 用超类方便嘛,如果你定个int的话,下次再出现个String的话,不是又挂了哦




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