一、一维数组
数组由同一类型的基本数据或对象组成,并封装在同一个标识符下。
(1)声明数组变量:定义数组的名字或引用,不指定元素个数,不分配内存。如果该变量不包含对数组的引用,则这个变量的值为null。
elementType[]arrayRefVar;
(2)创建数组:数组是对象,运行时需要动态初始化。用new操作符创建数组,并将该数组的引用赋给变量arrayRefVar。arraySize可以是常量或有值的变量。
arrayRefVar=newelementType[arraySize];
声明创建数组:elementType[]arrayRefVar=new elementType[arraySize];
声明创建初始化数组:double[]myList={1.9,2.9,3.4,3.6};//省略new。
(3)访问数组:下标从0开始到arrayRefVal.length-1,类型为byte、short、int、char。
arrayRefVal[index]=value;
(4)数组大小:创建数组后就不能再修改其大小,每个数组中都有一个由public final修饰的成员变量length,arrayRefVal.length获取数组大小。
(5)默认值:数值型0,char型’\u0000’,boolean型false。
(6)复制数组
list2=list1;不能实现数组内容的复制,只是将list1的引用值复制给了list2,list2原来引用的数组不能再引用,变为垃圾。
使用循环语句逐个复制数组元素。
使用java.lang.System类中的静态方法arraycopy。复制前必须创建目标数组以及分配给它的内存空间。
System.arraycopy(sourceArray,srcPos,targetArray,tarPos,length);
二、二维数组
二维数组的每一个元素都是一维数组。Int[][]myArray;初始值为null。创建二维数组:
int[][] a=newint[2][3];//a.length为2,a[0].length为3
int[][] b=newint[2][]; b[0]=new int[3];//用new创建数组时,必须指定第一个下标
int[][] c={//二维数组的每一行可以不同,锯齿数组
{1,2,3,4},
{1,2,3},
{1,2}
};
三、Arrays类java.util.Arrays类包含一些实用的方法,用于常见的数组操作。这些方法都有对所有基本类型的重载方法。
(1)数组复制copyOfRange
只需要源数组,from表示起始位置(取得到),to表示结束位置(取不到)。
int[] targetArray=Arrays.copyOfRange(sourceArray,from,to);
(2)数组排序sort
Arrays.sort(arrayRefVar);//对整个数组
Arrays.sort(arrayRefVar,from,to);//对数组元素from-(to-1)
如果计算机有多个处理器,parallelSort更高效。
(3)查找元素出现的位置binarySearch
需保证数组升序有序。如果数组中有多个相同元素,结果不确定。如果数组中不存在该关键字,返回-(插入点下标+1)。
Arrays.binarySearch(arrayRefVar,value);
(4)比较两个数组是否相等equals
Arrays.equals(arrayRefVar1,arrayRefVar2);
(5)填充数组fill
Arrays.fill(arrayRefVar,value);//填充整个数组
Arrays.fill(arrayRefVar,from,to,value);//填充数组下标from-(to-1)
(6)将数组转换为字符串toString
显示数组所有元素的简便方法。Arrays.toString(arrayRefVar);
对于char[]类型的数组,可以使用一条打印语句打印。