区别:
1) 数组的长度是固定的,集合的长度可以动态扩展
2) 数组只能存储相同类型的数据,集合可以存储不同的类型的数据
public static void main(String[] args) {
int[] arr={1,2,3};
arr[2]=2.0;
}
在编译期会提示类型不匹配的错误
public static void main(String[] args) {
List list=new ArrayList<>();
list.add(new String("nihao"));
list.add(2);
list.add(8.8);
}
如果集合加上泛型,就会限制集合中只能存储这一种数据类型的数据,下面的<>中定义了泛型的类型为String,再去添加Integer类型的数据时就会报错了
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("你好");
list.add(23);
}
3) 数组可以存储基本数据类型,也可以存储引用数据类型,而集合只能存储引用类型,这里说明一下,如下代码 “你好” 23 存到集合中并没有报错,不是因为集合可以存储基本数据类型的数据,而是该数据经过了自动装箱操作,将基本数据类型转换成对应的包装类数据了
public static void main(String[] args) {
List list=new ArrayList<>();
list.add("你好");
list.add(23);
}
应用场景:
1)数组适应于数据长度固定的情况,并且主要进行查询操作
2)集合的应用场景如下:
2-1)无法预测存储数据的数量
2-2)同时存续具有一对一关系的数据,也就是键值对的数据
2-3)需要对进行数据修改,例如增删
2-4)需要解决数据的重复问题,可以直接使用集合Set完成