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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 夜枫冷 中级黑马   /  2014-12-30 01:11  /  1016 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

程序1:                                                                     
public class IteratorDemo {                                                      
        public static void main(String[] args) {
                // 创建对象
                Collection c = new ArrayList();

                // 添加元素
                c.add("hello");
                c.add("world");
                c.add("java");

          Iterator it = c.iterator();
                  while (it.hasNext()) {
                         String s = (String) it.next();
                         System.out.println(s);
                 }
         }
}
程序2:
import ItetatorDemo.Student;

public class ListTest {
        public static void main(String[] args) {
                //创建集合对象
                List list = new ArrayList();
               
                //创建元素对象
                Student stu1 = new Student("张三",24);
                Student stu2 = new Student("李四",26);
                Student stu3 = new Student("王五",30);
               
                //将元素对象添加进集合
                list.add(stu1);
                list.add(stu2);
                list.add(stu3);
               
               
                //方式一
                //获取迭代器对象
                Iterator it = list.iterator();
                while(it.hasNext()){
                        Object obj =it.next();
                        Student s = (Student)obj;
                        System.out.println(s.getName()+"----"+s.getAge());
                }

在while(it.hasNext()){}中
程序一用了String s = (String) it.next();
程序2用了Object obj =it.next();
那么这两者有什么区别,分别用在什么情况下?弄不懂了,有没有大神来指教下?

7 个回复

倒序浏览
it.next()的返回值是Object类型的,集合装的是对象,如果你需要在迭代出来的对象调用这对象的特有方法的时候,这时候就要将向下转型,转会本类的类型,否则就不可以调用遍历出来的对象中的特有方法。你这个参考一下吧
回复 使用道具 举报
这两个是一样的呀,只不过第一个把两条语句写成一条。第二个是分开写。其实都是先it.next(); 然后向下转型
就相当于 int a=3;     和  int a;   a=3;  这样的区别而已
回复 使用道具 举报
it.next();返回的是object对象,object中包含String类型,程序一指定返回类型为String,就是将object指定为String,所有需要在it.next();前加(String)。这里就是泛型的应用。
回复 使用道具 举报
我还没有学,看着很深奥的样子
回复 使用道具 举报
路过看看
回复 使用道具 举报
吴海松 发表于 2014-12-30 01:23
it.next()的返回值是Object类型的,集合装的是对象,如果你需要在迭代出来的对象调用这对象的特有方法的时 ...

这么说Object类的范围更大是吧?
回复 使用道具 举报
夜枫冷 发表于 2014-12-31 18:03
这么说Object类的范围更大是吧?

所有的类都继承Object,Object就是传说中的上帝,呵呵!你还是复习一下继承和多态的那些内容就懂了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马