一、数组和集合的定义
1、数组的定义
数组是java语言内置的数据类型,它是一个线性的序列,所以能快速访问其他的元素,数组和其他语言不同,当你创建了一个数组时,它的容量是不变的,而且在生命周期也是不能改变的,还有JAVA数组会做边界检查,如果发现有越界现象,会报RuntimeException异常错误,当然检查边界会以效率为代价。
2、集合的定义
数组长度是固定,当添加的元素超过了数组的长度时需要对数组重新定义, 这样太麻烦了! 所以, Java内部给我们提供了集合类,能存储任意对象,长度是可以改变的,随着元素的增加而增加,随着元素的减少而减少。
JAVA还提供其他集合,list,map,set,他们处理对象的时候就好像这些对象没有自己的类型一样,而是直接归根于Object,这样只需要创建一个集合,把对象放进去,取出时转换成自己的类型就行了。
二、数组和集合的区别
1、数组和集合的比较
(1)数组的特点
a.数组本质上就是一段连续的内存空间,用于记录多个类型相同的数据;
b.数组一旦声明完毕,则内存空间固定不变;
c.插入和删除操作不方便,可能会移动大量的元素导致效率太低;
d.支持下标访问,可以实现随机访问;
e.数组中的元素可以是基本数据类型,也可以使用引用数据类型;
f.数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查(不懂),都是最快的.
(2)集合的特点
a.内存空间可以不连续,数据类型可以不相同;
b.集合的内存空间可以动态地调整;
c.集合的插入删除操作方便,可以不移动大量元素;
d.部分支持下标访问(例如list),部分不支持; ArrayList就是基于数组创建的容器类.
e.集合中的元素必须是引用数据类型;
2、数组和集合的区别
一、数组声明了它容纳的元素的类型,而集合不声明。
二、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
三、数组既可以存储基本数据类型 ,又可以存储引用数据类型, 基本数据类型存储的是值,引用数据类型存储的是地址值; 一个数组的存放的类型只能是一种(基本类型/引用类型)。
集合存放的类型可以不是一种(不加泛型时添加的类型是Object)。(与Java数组不同,Java集合中不能存放基本类型数据,而只能存放对象的引用)。集合只能存储引用数据类型(对象), 集合中也可以存储基本数据类型,但是在存储的时候会自动装箱(JDK1.5新特性)变成对象.
四、数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查都是最快的。
五、若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库(ArrayList就是基于数组创建的容器类),array不适用。