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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯建鹏 黑马帝   /  2012-3-15 11:38  /  2566 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 冯建鹏 于 2012-3-15 11:45 编辑

数组和集合类同是容器,有何不同?

数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象。

集合类的特点

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。


当集合前面加上泛型的时候集合不就也就 只能加入固定类型对象了吗?不能加入不同类型了吧

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

3 个回复

正序浏览
由于集合可以存储不同类型的数据, 所以取元素时有可能会导致类型转换错误, 泛型为JDK1.5增加的新特性, 为了减少操作集合时出错的几率, 集合一旦声明了泛型,便只能存储同一类型的对象了;
使用泛型的好处:
                      1: 提高了程序的安全性;
                      2: 将运行期遇到的问题转移到了编译期;
                      3: 获取元素的时候省去了类型转换的麻烦;
                      4: 泛型类的出现优化了程序设计;
                    
回复 使用道具 举报
泛型确实是为了实现编译安全的一种机制。但是加了泛型的集合存储的固定类型对象也是对象,并不违背集合类容器容纳对象的定义。而数组存储的是基本数据类型。基本数据类型与对象的对应关系是byte--Byte  short--Short  int--Integer long--Long float--Float double--Double char--Character boolean--Boolean
回复 使用道具 举报
是的。当集合加上泛型之后就只能存入泛型类的对象。这是一种安全机制。
当集合不加泛型的时候i,它可以存入不同种类型的对象,对于用户来讲,这是一种非常不安全的操作,因为它能接收各种类型,有可能用户会存入错误的数据进去。所以我们使用了泛型来强制这种错误在编译时期就会报错。
这是利用了数组的这种类型确定性的有点。
这个问题应该从安全性的方面去考虑,你应该就会明白为什么要在集合上加上了泛型。

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马