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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

昨天回家时复习了集合部分,可是看到了那个自定义的sop 函数时,误入歧途了怎么也想不开,望大侠救命!


class  CollectionDemo
{
public static void main(String[] args)
{
  
  method_get();
}
public static void method_get()
{
  ArrayList al = new ArrayList();
  //1,添加元素。
  al.add("java01");//add(Object obj);
  al.add("java02");
  al.add("java03");
  al.add("java04");
  /*
  Iterator it = al.iterator();//获取迭代器,用于取出集合中的元素。
  while(it.hasNext())
  {
   sop(it.next());
  }
  */
  for(Iterator it = al.iterator(); it.hasNext() ; )
  {
   sop(it.next());
  }
}

public static void method_2()
{
  ArrayList al1 = new ArrayList();
  al1.add("java01");
  al1.add("java02");
  al1.add("java03");
  al1.add("java04");
  ArrayList al2 = new ArrayList();
  al2.add("java03");
  al2.add("java04");
  al2.add("java05");
  al2.add("java06");
  
  //al1.retainAll(al2);//去交集,al1中只会保留和al2中相同的元素。
  al1.removeAll(al2);
  sop("al1:"+al1);
  sop("al2:"+al2);


}
public static void base_method()
{
  //创建一个集合容器。使用Collection接口的子类。ArrayList
  ArrayList al = new ArrayList();
  //1,添加元素。
  al.add("java01");//add(Object obj);
  al.add("java02");
  al.add("java03");
  al.add("java04");
  //打印原集合。
  sop("原集合:"+al);

  //3,删除元素。
  //al.remove("java02");
  //al.clear();//清空集合。

  //4,判断元素。
  sop("java03是否存在:"+al.contains("java03"));
  sop("集合是否为空?"+al.isEmpty());

  //2,获取个数。集合长度。
  sop("size:"+al.size());
  //打印改变后的集合。
  sop(al);
}
public static void sop(Object obj)
{
  System.out.println(obj);

}

}程序结束。

这个sop函数的形式的参数类型是object 类,可是在主函数调用时sop("size:"+al.size());实际参数类型是al.size().这是怎么回事呢?

4 个回复

倒序浏览
终于看清楚了你的问题~~, sop("size:"+al.size());
a1.size():----->返回集合中的个数 int类型,那么("size:"+ int类型)----->转化为字符串, 假设返回4了,如: "size:4"
你传入到sop方法里的参数其实是String类型的了,然后sop 调用String的toString()方法打印字符串中的内容。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
sop("size:"+al.size());
首先想问你
? a = 1+"";  应该是一个什么类型?
这应该是String a = 1+"";
那你sop里面接收的同样也是一个字符串加上一个int类型的值。
那返回的就是个字符串。
回复 使用道具 举报
秦冲 发表于 2012-5-29 20:04
终于看清楚了你的问题~~, sop("size:"+al.size());
a1.size():----->返回集合中的个数 int类型,那么(" ...

其实你没有看懂,自定义的sop 函数里的形参是object类,而实参给的是string .我不明白在这个地方。这个:handshake你知道吗?
回复 使用道具 举报
赵志勇 发表于 2012-5-29 20:31
其实你没有看懂,自定义的sop 函数里的形参是object类,而实参给的是string .我不明白在这个地方。这个:h ...

汗~~~当你传递string 给sop参数时,其实是Object obj =new String("size:4");
String是Object子类
父类引用指向子类对象。。。这可是很基础的东西。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马