数组的概念
数组是多个相同类型的元素组成的数据集,创建数组的时候,Java就会在内存中分配一段连续的空间来存放数组的元素。数组中每一个元素都有对应的下标指向元素,下标从0开始计算,可以根据下标访问对应的元素。
数组创建并赋值:
/**
* 创建数组方法一:
* 类型后方加上[],表示该类型的数组,并定义数组的长度。例如:
* int[] arr1 = new int[数组长度];
* String[] arr1 = new String[数组长度];
*
* 创建数组方法二:
* 直接使用{},对数组初始化并且赋值。例如:
* int[] arr2 = { 1,2,3,4 }; //省略情况
* int[] arr2 = new int[] { 1,2,3,4 };//可以省略new int[]
*
*/
/**
* 创建数组方法一
*/
int[] arr1 = new int[6];
//根据数组下标依次赋值
arr1[0] = 3;
arr1[1] = 45;
arr1[2] = 67;
arr1[3] = 99;
/**
* 创建数组方法二:
*/
int[] arr2 = { 1,2,3,4 };
数组的使用:
public static void main(String[] args) {
String[] arr = {"中","华","人","民","共","和","国"};
//根据下标获取元素
System.out.println("arr[1] = " + arr[1]);
//根据下标修改元素
arr[0] = "亚洲";
arr[1] = "天朝";
System.out.println("arr[0] = " + arr[0]);
System.out.println("arr[1] = " + arr[1]);
//打印数组内所有元素
//方法一:使用Arrays.toString(),打印数组元素
System.out.println("Arrays.toString(arr) = " + Arrays.toString(arr));
//方法二:for循环遍历数组元素
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if(i == arr.length-1){
System.out.print(arr[i]);
}else {
System.out.print(arr[i]+",");
}
}
System.out.print("]");
}
操作数组需要注意:添加的元素个数、遍历数组的下标皆不能大于数组设定的长度,否则会抛出数组下标越界异常:java.lang.ArrayIndexOutOfBoundsException。
二维数组的使用:
二维数组的本质是普通的数组(一维数组)作为元素组成的数组,示例如下:
public static void main(String[] args) {
String[][] arr = {
{"床","前","明","月","光"},
{"疑","是","地","上","霜"},
{"举","头","望","明","月"},
{"低","头","思","故","乡"}
};
for (int i = 0; i <arr.length ; i++) {
//System.out.println("Arrays.toString(arr[i]) = " + Arrays.toString(arr[i]));
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]);
}
System.out.println();
}
}
二维数组操作和普通数组一样,可应用于平面化的数据结构,例如:棋盘、坐标都可以应用在二维数组中。
java自带的数组常用的方法:
public static void main(String[] args) {
String[] arr = {"中","华","人","民","共","和","国"};
/**
* Arrays.toString(数组):将数组所有元素转成字符串
*/
System.out.println(Arrays.toString(arr));
/**
* Arrays.copyOf(数组,指定长度): 从下标为0开始,复制指定长度数组
*/
System.out.println(Arrays.toString(Arrays.copyOf(arr, 2)));
/**
* Arrays.copyOfRange(数组,开始下标,结束下标): 复制指定范围长度数组
*/
System.out.println(Arrays.toString(Arrays.copyOfRange(arr, 2,4)));
/**
* Arrays.sort(数组): 对数组的元素进行排序
*/
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
/**
* Arrays.binarySearch(数组,元素): 二分查找数组内容,使用前先sort排序数组。
*/
Arrays.sort(arr);
System.out.println(Arrays.binarySearch(arr,"国"));
}