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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始



用于操作数组的工具类Arrays,它有一个方法asList()(将数组变成List集合)。
它在将数组变成集合时,如果数组中的元素都是对象,那么变成集合时,数组中的对象直接成集合中的对象。
如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素。
由此联想到,在集合中应该是不能存放基本数据类型的。
请问各位马友们:集合中为什么不能存放基本数据类型?



评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

11 个回复

倒序浏览
因为集合是存放引用型数据的容器。不过你可以用Integer把基本数据类型封装成对象,存放进去。
回复 使用道具 举报 1 0
这个你必须得知道集合中是怎么存放元素的,集合中存放的可都是对象的引用,实际内容都在堆上面或者方法区里面,但是基本数据类型是在栈上分配空间的。随时就被收回的。但是通过自动包装类就可以把基本类型转为对象类型,存放引用就解决了这个问题。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 2 0
首先,集合的存在就是为了方便对多个对象的操作才出现的,集合是存储对象最常用的一种方式,也就是说,集合的从有到无都是因为对象,人们发现要保存多个对象很麻烦,于是便发明了集合,集合是依赖对象而生的,所以就对基本数据类型"不感兴趣",但是,现在基本数据类型都有了其对应的封装的对象,而且有了自动拆箱和装箱功能,基本数据类型和其对应对象之间的转换变得很方便,想把基本数据类型存入集合中,直接存就可以了,系统会自动将其装箱成封装类
然后加入集合当中

例如:下面的代码中,我就直接把int类型加入了集合中,java会自动将int类型包装成Integer对象,再装入集合中
List<Integer> list = new ArrayList<Integer>();
list.add(1);
//打印结果为1
System.out.println(list.get(0));


希望能回答你的问题!

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 2 0
MVP 发表于 2014-3-18 10:13
因为集合是存放引用型数据的容器。不过你可以用Integer把基本数据类型封装成对象,存放进去。 ...

谢谢你!不过我想知道底层具体的原理。
回复 使用道具 举报
房建斌 发表于 2014-3-18 10:36
这个你必须得知道集合中是怎么存放元素的,集合中存放的可都是对象的引用,实际内容都在堆上面或者方法区里 ...

谢谢,这好像是我要的答案!
回复 使用道具 举报
Alexander 发表于 2014-3-18 10:37
首先,集合的存在就是为了方便对多个对象的操作才出现的,集合是存储对象最常用的一种方式,也就是说,集合 ...

谢谢你,让我对集合的历史有了解了。
回复 使用道具 举报
集合 只能放对象  数组可以放基本类型和对象
回复 使用道具 举报
Integer是int的包装类(wrapper),是对象

int是基本数据类型


在具体的内存分配上

对象是放在堆里的,基本数据类型是放在栈里的,看看容器的具体实现,你就能更理解这些了

JAVA的集合只能放引用类型
回复 使用道具 举报
说的很好!
回复 使用道具 举报
Alexander 发表于 2014-3-18 10:37
首先,集合的存在就是为了方便对多个对象的操作才出现的,集合是存储对象最常用的一种方式,也就是说,集合 ...

这才是我想要的答案。
回复 使用道具 举报
我发现集合也可以添加啊基本数据类型值...
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马