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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 只想要一盏灯 中级黑马   /  2013-11-4 21:28  /  1184 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 只想要一盏灯 于 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类,那样要怎么才能把代码改正确。

评分

参与人数 1技术分 +1 收起 理由
To + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
这很简单哪,你定义sop()的时候接收的类型只允许是Stirng类型的,所以当你在调用String中的方法indexOf(String str,int fromIndex)时,它返回的是一个指定子字符串在此字符串中第一次出现处的索引,它是一int类型的,所以是类型不匹配!

评分

参与人数 1技术分 +1 收起 理由
To + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
API文档中这样描述indexOf()方法


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

希望可以帮到你
回复 使用道具 举报
张秀威 发表于 2013-11-4 21:50
这很简单哪,你定义sop()的时候接收的类型只允许是Stirng类型的,所以当你在调用String中的方法indexOf(Str ...

这个我知道啊,那意思就是要接收这个 i nt 的话,只能用超类是吧?
回复 使用道具 举报
嗯 用超类方便嘛,如果你定个int的话,下次再出现个String的话,不是又挂了哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马