数组:在连续的内存空间,存储一组相同类型的元素。
区分:数组访问和数组搜索
数组访问是通过索引位置取得某个元素的值,而数组搜索是直接找这个数。
我们所定义的局部变量都存在于栈中,而堆中存放的都是数组和对象(数组本身也是对象)。凡是new建立的都是在堆中的,堆中存放的都为对象实体。实体可以看到多个属性,如果一个数据消失,这个实体并未消失,则还可以使用,则堆是不会释放的。但是栈却不一样,栈中存放的都是单个变量,变量释放了,那就没有了。
例:
①s = new int [5];
②int [][] a = new int [3][4];
a.length=3 a[0].length=4
多维数组也有length,但是他只表示第一维数组的长度。
数组的基本操作:
①访问Access
②搜索Search
③插入Insert
④删除Delete
常用操作:
<1>创建数组
①声明数组:
type [] arrayName ; 或者 type arrayName [] ;
②初始化(3种方法):
(1) arrayName = new type[] {element1,element2,element3,···};
(2) arrayName = new type[length];
arrayName[0] =element1;
arrayName[1] =element2;
arrayName[2] =element3;
···
(3) arrayName = {element1,element2,element3,···};
<2>向数组中添加元素
数组长度是固定不变的,我们不能直接在元素组上添加元素。因此,我们可以利用以下几种方法实现向数组中添加元素:
①重新创建一个新的数组,该数组长度为array.length+1,再将原数组中的元素copy到新数组中,并且在最后也将要添加的元素放入到原数组中。
②可以利用动态数组ArrayList,利用add()来实现:
③可以将array先转化为list,用list的add()方法来添加元素,再将list转化为array。请注意:在将array转化为list的过程中,使用的asList()方法会返回一个final的固定长度的ArrayList类,并不是java.util.ArrayList,直接这样利用它进行add()是无效的。
<3>访问数组中的元素(通过索引取得某个元素的值)
//数组名称 [索引值]
<4>修改数组中的元素
<5>删除数组中的元素:
与向数组中添加元素不能直接添加元素的原因相同。
①新建立一个数组newArray,将不是要删除的元素copy到新的数组中,从而实现数组元素的删除。
②利用动态数组ArrayList,使用remove()实现。
<6>遍历数组:
①传统遍历方式for循环
②foreach循环
③利用Arrays类中的toString()方法
<7>查找数组元素:
①传统查找方式for循环
②利用折半查找(前提数组为有序)