http://hi.baidu.com/drmfslc5/blog/item/c41591c49079a6d0d000604a.html
数组 在程序设计中一直被当作是一个良好的数据组织工具。这里又说它是对象,是因为java中,数组是一个动态创建的对象,并不像八种基本类型一样在定义时就为其分配了固定的内存空间。 数组的类型可以是八种基本数据类型,也可以是引用类型,没有特定的名称去访问每一个数组元素,需要通过数组下标来进行。
数组按维数分为一维数组,多维数组,其中二维数组是多维数组中运用比较多且广泛的。
一维数组 是一种线性的组合
定义方式:datatype arrayName[]; (保留了原C/C++程序设计的习惯方式)
datatype[] arrayName; (Java中新加并常用的数组定义方式,因为datatype[]看起来像是定义了某个数据类型的数组, arrayName看起像是操作数组的句柄)。
如:Object obj[]; Object[] obj;
分配内存(实例化):Java中new关键字用来实例化类并为该对象分配内存空间。
如:obj = new Object[10];
初始化方式:为数组分配内存后,数组中元素是什么,无法确定,需要为其填充相应的值。 一般为用下标选择性地填充 或是用循环语句遍历填充。for(int i=0;i<obj.length;i++){obj[i] = new Object();}
以上三个操作可以一步到位: double[] dou = {2.3,3.3,5.4,2.33} .用“{}”将“,”隔开的double值在声明时直接初始化数组,注意:这种方法只能在声明时使用。 以下的用法是错误的: float flo[]; flo = {1.7L,2.3L,4.5L};上面有一个length变量,是容器默认的public变量,表示容器中元素的个数。
二维数组 相当于一种平面中点的组合,也可以理解为多行具有一些属性集的数据集,每行的属性值不同而已
定义方式:datatype arrayName[][]; (保留了原C/C++程序设计的习惯方式)
datatype[][] arrayName; (Java中新加并常用的数组定义方式)。
如:Object obj[][]; Object[][] obj;
分配内存(实例化):
如:obj = new Object[10][20];
java中的多维数组还可以按维分别实例化,也就是说二维数组中每一行元素数不一定是相等的。如
obj[0] = new Object[10];
obj[1] = new Object[20];
obj[3]= new Object[15];
将二维数组分配了4行,第一行10个元素空间,第二行20个元素,第三行无元素空间,第四行有15个元素空间
初始化方式:数组分配内存后,同样元素是什么无法确定,需要为其填充相应的值。 一般为用下标选择性地填充 或是用循环语句遍历填充。for(int i=0;i<obj.length;i++){obj[i] = new Object();}
一步到位: double[][] dou = {{2.3,3.3,},{5.4,2.33}} .用“{}”将“,”隔开的double值在声明时直接初始化数组。初始化一个二维数组2行,第一行三列,第二行两列。
多维数组 类似二维数组,只是维数多出,只需要注意写在前面的维数与写在后面维数的所属关系。
数组的操作 即对数组整体或是其中各元素的操作 拿一维数组来举例说明。其实就是在Arrays接口下的一些静态方法
数组的复制:Arrays.copyOf(datatype[] a, int length) 返回一个datatype型的数组并且含有length个元素,未填充部分默认值为0,false,null
数组的填充:Arrays.fill(datatype[] a,[int fromIndex,int toIndex,] datatype value);
将数组a中的元素的值填充为value,默认为全部填充,写了下标的是控制填充元素的位置(不算toIdex)。
数组的比较:Arrays.equals(datatype[] a,datatype[] b) 比较两个数组的填充内容,只有填充值及值所在下标 也就是说 填充内容 完全相同的情况下才返回true 否则返回false;
数组的排序:Arrays.sort(datatype[] a,[int fromIndex,int toIndex]);将数组a 排序,如果有下标范围限定,则排序固定下标范围的元素(不算toIdex)。
数组的二分查找:需要先用排序sort()方法将数组排序 Arrays.binarySearch(datatype[] a,[int fromIndex,int toIndex,]datatype key) 二分查找 在数组a中查找key值的下标并返回,可以在所选下标范围(不算toIndex)内查找。找不到返回个负值