黑马程序员技术交流社区
标题:
关于String操作的小问题有点不明白
[打印本页]
作者:
习惯就好
时间:
2015-3-1 23:00
标题:
关于String操作的小问题有点不明白
本帖最后由 习惯就好 于 2015-3-2 09:29 编辑
</blockquote></div><div class="blockcode"><blockquote>class CountTest
{
public static void main(String[] args)
{
String s="Hllello Worlld!";
sop("s="+s);
sop("count="+count(s,"ll"));
}
public static int count(String s,String key)
{
int count=0;//定义计数器
int index=0;//定义获取角标变量
while((index=s.indexOf(key,index))!=-1)//如果包含,则继续
{
index=index+key.length();//从找到的子串位置后一位开始获取(为什么要从后一位开始???)
count++;
}
return count;
}
private static void sop(Object obj)//为什么这个地方要传入一个Object类型的对象?按照上面类的调用,不应该是String类型的吗?
{
System.out.println(obj);
}
}
复制代码
我的问题在上面注释的部分做了标记,希望大神们解答一下疑惑!!!
作者:
zfgrinm
时间:
2015-3-2 02:10
希望能帮到你...
package lianxi;
public class CountTest
{
public static void main(String[] args)
{
String s="Hllello Worlld!";
sop("s="+s);
sop("count="+count(s,"ll"));
}
public static int count(String s,String key)
{
int count=0;//定义计数器
int index=0;//定义获取角标变量
while((index=s.indexOf(key,index))!=-1)//如果包含,则继续
{
index=index+key.length();//从找到的子串位置后一位开始获取(为什么要从后一位开始???)
/*
* 这里并不是从找到的子串的后一位开始,而是把找到的位置index往后移 key.length()位,
* 是从后key.length()位开始查找的,因为角标index到index+key.length()之间正好是要
* 查找的子串key.
*
*/
count++;
}
return count;
}
private static void sop(Object obj)//为什么这个地方要传入一个Object类型的对象?按照上面类的调用,不应该是String类型的吗?
{
/*
* 这里传入String类在这个例子里是可以的,传入Object类,其实也是调用Object的toString()方法
* 之后再打印输出,选择传入Object类是因为他是所有类的父类,这样任何类都可以调用函数sop()进
* 行打印。比如说你这里如果选择String类,直接打印sop(count)就会报错说类型不匹配,
* 因为count是int型,而如果这里选择Object类时不会报错,因为所有的对象都是Object的子类,
* 就都可以打印,增强了函数的通用性,后面写这个函数时都会选择Object类。
*/
System.out.println(obj);
}
}
复制代码
作者:
huangchunwei
时间:
2015-3-2 09:05
楼上棒棒哒。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2