一维数组的初始化
int[] arr;
arr = new int[10];
也可以在声明数组时分配空间:
int[] arr = new int[10];
或者直接指定数组元素的值:
int[] arr = {1,2,3,5,8};
注意:一旦声明了数组的大小,就不能再修改。
二维数组的初始化
int[][] arr = new int[][]{{1,2},{3,4}};
int[][] arr = new int[10][10];
int[][] arr = new int[10][];
二维数组的第二位长度是可以变化的。
获取长度
在一维数组中,数组对象的length
属性会返回数组元素的个数。
而对于二维数组,直接使用length
返回的是数组的行数。需要在指定的索引后加上length
来获取某一行的列数arr[i].length
。
获取元素
除了通过数组下标以外,还可以使用for each循环遍历数组中的元素。
for (int[] i : arr)
for(int j : i)
System.out.println(j);
这种方式不能用来修改数组中元素的值。
Arrays类
Arrays类处于 java.util 包下,其中包含了数组操作的很多方法。
binarySearch
:二分查找key在a数组中(from到to索引)出现的索引,若未找到则返回负值。要求数组已经按升序排列。
int binarySearch(type[] a, type key);
int binarySearch(type[] a, int from, int to, type key);
copyOf
/copyOfRange
:复制original数组的前length个元素,或from到to索引的元素,返回一个新数组。目标数组如果已经存在,将会被重构。如果original.length小于length或to将用默认值填充。
type[] copyOf(type[] original, int length);
type[] copyOfRange(type[] original, int from, int to);
equals
:判断a和b数组的长度和元素是否全部相同。
boolean equals(type[] a, type[] b);
fill
:将a数组的所有元素赋值为val。
void fill(type[] a, type val);
sort
:对数组(from到to索引)排序。
void sort(type[] a);
void sort(type[] a, int from, int to);
toString
:将数组转换为字符串。
String toString(type[] a);
数组的复制
Array.copyOf()
和Array.copyOfRange()
都会将目标数组复制到新数组中,目标数组如果已经存在,将会被重构。
arraycopy()
方法位于 java.lang.System 类中。语法形式为:
System.arraycopy(type[] src,int srcIndex,type[] dest,int destIndex,int length)
其中,src 表示原数组;srcIndex 表示原数组中的起始索引;dest 表示目标数组;destIndex 表示目标数组中的起始索引;length 表示要复制的数组长度。目标数组必须已经存在,且不会被重构,即替换目标数组中的部分元素。
clone()
方法位于类 Object 中(数组也属于Object类),可以创建一个有单独内存空间的对象,目标数组如果已经存在,将会被重构。返回值为Object类型,要使用强制类型转换为其他类型。例如:
int[] target = (int[])source.clone();