黑马程序员技术交流社区

标题: 关于集合的一些小问题 [打印本页]

作者: Aaron9527    时间: 2016-5-31 01:31
标题: 关于集合的一些小问题

import java.util.ArrayList;

class Student{
       
}
public class Demo {
        public static void main(String[] args) {
                Student stu = new Student();
                //存入到集合
                ArrayList list = new ArrayList();
                list.add(stu);
                Student stuObj = (Student)list.get(0);
                //释放stu
                stu = null;
               
                list.add(10);//list.add(Integer)
                list.add(3.14);//list.add(Double)               
        }
}
将一个类存入到集合中有什么意义?它存储的是类的对象,如果我想调用类中的成员方法是不是还需要从集合中取出对象,让再用类名.调用来调用这个函数吗?
作者: 爱生活爱Java    时间: 2016-5-31 12:03
我说一下我的理解,类是抽象的,而对象是具体的,单说类的意义不大。而将类的对象放到集合中,准确的说是将对象的地址值放到了集合中。
就那你写的这个例子来说吧,你需要把学生对象放到List集合中,首先new一个学生对象出来,这样就会在堆内存开辟了一块空间,假如说它有一个地址值0x001,List的底层是数组结构,List的add()方法将学生对象放到集合中,实际上就相当于list集合中的一个索引记录了一个地址值0x001,完了这个地址值指向了刚才的学生对象。但是List的add(Object obj)方法默认的是Object类型的,你传一个学生对象进去就相当于做了这么一件事Object obj=new Student(); 这里会把学生对象自动提升为Object类型,这就是父类指向子类的引用(多态嘛)。如果你想访问学生对象中的方法,就需要遍历集合,返回的是Object,这里需要把Object转为Student就行了(向下转型),完了再通过学生对象.方法名来调用方法了




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