数组
静态定义:程序员定义值,系统决定长度
动态定义:程序员定义长度,系统决定值
一维数组的声明
- 数据类型 [] 数组名 = new 数组类型[数组长度];
- 数据类型 [] 数组名 = new 数组类型[]{元素,元素,元素。。。};
- 数据类型 [] 数组名 = {元素,元素,元素。。。};
二维数组的声明
增强for循环
foreach:用于读取数组元素的值,增强for循环事jdk1.5之后的新功能,用于读取数组或者集合中的所有元素
-
数组是一种引用数据类型
数组引用变量只是一个引用
数组元素和数组变量在内存里是分开存放的 -
数组的优点:
插入快,能够让我们在o(1)的时间内根据数组的下标查询某个元素 -
缺点:查找慢,删除慢,大小固定
当我们需要查询某个元素是否存在的时候需要遍历整个数组 消耗o(n)的时间,删除和添加也是
数组是顺序表
(顺序表)数组有链表的区别:
(1)存储空间的区别,数组是静态分配内存空间,所有元素是存放在一组地址连续的存储单元中,一旦分配,不可更改,不便于拓展,数据元素在数组中的顺序号可确定它在存储单元中的位置,因此顺序表中不需要指针域,而链表是动态分配内存空间的,存储空间也不确定的。
(2)数组便于查找和修改(下表定位),但不利于插入和删除(数据移动量过大),也不便于扩充(连续的地址,静态存储结构)。而链表不便于查找和修改(从链头到链尾数据量过大),但便于插入和删除并且速度快(锻链即可)
array
Arrays类包含了:排序、查找、填充、打印内容等常见的操作。
此处的Arrays.toString()方法是Arrays类的静态方法,不是前面讲的Object的toString()方法。
Arrays.sort(a); 数组的排序;
Arrays.fill(a, 2, 4, 100); //将2到4索引的元素替换为100;
Arrays.toString(a); 二分法查找数组的索引