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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 贠(yun)靖 高级黑马   /  2012-3-17 16:16  /  3232 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数组和集合都可以存储对象,数组存储对象原理是和集合相同吗?
比如 Person[] persons=new Person[4];
     persons[0]=new Person("zhangsan",14);
     persons[1]=new Person("李四",13);
         这时候的persons[0] 就相当与一个人类的引用吗?
         它是指向这个人类 所创建的对象的? 也就是说persons[0]
         里面存放的是对象的地址吧?  那么调用对象里面的属性 就和
         一般的变量引用想同了  是这样子的吗?
         还有就是数组存放对象除了必须是同一个类和数组大小事固定外还
         有没有什么特殊之处?

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
蒙武辉 + 1
职业规划-刘倩老师 + 1

查看全部评分

3 个回复

倒序浏览
将数组和集合存储到对象数据库中并不总与存储常规的结构化对象不同,只是要注意数组不能被直接查询,而集合则可以。
回复 使用道具 举报
数组和集合存储的都是对象的引用。数组是JAVA语言内置的数据类型,它是一个线性的序列,所以它可以快速的访问其他的元素。但是速度是要有代价的,当你创建了一个数组之后,它的容量就固定了,而且在其生命周期里是不能改变的。集合的存储是由算法支持的,不同的集合算法不一样。
比如HashSet,HashMap用了哈希表,ArrayList LinkedList用了链表,TreeMap,TreeSet用了红黑二叉树等等。
回复 使用道具 举报
      当然不同了,数组存贮对象其实也同存贮数字等差不多,在栈空间中分配一块连续的存贮空间用来存放并且这个数组的大小已经确定了,是不能改变的,然后每一空间所指向的堆空间是一个Person对象而已。然后集合就不同了,虽然同样在栈空间分配空间但是它大小是不确定的,可以看成是动态分配的,就是根据你要存贮的大小来分配相应的大小,至于内部是怎么分配咱就先不管了。所以说不一样。
      person[0]是一个人的引用,表示在堆空间中对象的地址。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马