目录
引言
相较于C语言,Java数组只是声明方式不同,以及多了一些属性,最常用的就是length属性,其他方面基本一样
数组
一维数组
声明和初始化:
- 声明数组时,需要指定数组的类型和数组名,如
int[] numbers;
或String[] names;
。 - 初始化数组时,可以通过
new
关键字来创建数组对象,并指定数组的大小,如numbers = new int[5];
。也可以同时声明并初始化数组(动态声明),如int[] numbers = new int[5];
。也可以静态声明数组int[] numbers = {1,2,3,4,5};
int[] numbers = new int[5];
int[] numbers = {1,2,3,4,5};
访问:
- 数组的元素通过索引访问,索引从 0 开始计数。例如,
numbers[0]
表示数组numbers
的第一个元素。(这个与C语言一样)
长度:
- 使用数组的
length
属性可以获取数组的长度,即数组中元素的个数。例如,int size = numbers.length;
。
作为方法传递参数:
直接使用processArray(arr);
如果想直接传递一个静态数组,只能使用processArray(new int[] {1,2,3,4,5});
作为方法接收参数:
直接使用processArray(int[] arr) { ... }
。
二维数组
声明和初始化:
- 声明二维数组时,需要指定数组的类型和数组名,如 int[][] matrix; 或 String[][] grid;。 初始化二维数组时,可以通过 new 关键字来创建数组对象,并指定数组的行数和列数,如 matrix = new int[3][3];。也可以同时声明并初始化二维数组,如 int[][] matrix = new int[3][3];。 静态初始化二维数组时,需要在大括号中为每一行提供初始值,如 int[][] matrix = {{1,2,3},{4,5,6},{7,8,9}};。
int[][] matrix = new int[3][3];
int[][] matrix = {{1,2,3},{4,5,6},{7,8,9}};
访问:
- 二维数组的元素通过行索引和列索引访问,例如 matrix[0][0] 表示二维数组 matrix 的第一行第一列的元素。(与C语言一样)
长度:
- 对于二维数组,length 属性只返回第一维的长度,即行数。要获取第二维的长度,需要访问每个数组元素的 length 属性。
int row = matrix.length; //数组行数
int col = matrix[0].length; //数组列数
作为方法传递参数:
- 直接使用 processArray(arr);。
- 如果想直接传递一个静态二维数组,只能使用 processArray(new int[][] {{1,2,3},{4,5,6},{7,8,9}});。
作为方法接收参数:
- 直接使用 processArray(int[][] arr) { ... }。
数组的拷贝:
- Java 提供了
System.arraycopy()
方法和Arrays.copyOf()
方法来进行数组的拷贝操作,可以复制数组的部分或全部内容到新的数组中。
使用 System.arraycopy()
方法:
public class Main {
public static void main(String[] args) {
int[] sourceArray = {1, 2, 3, 4, 5};
int[] destinationArray = new int[5];
// 使用 System.arraycopy() 方法将 sourceArray 的内容复制到 destinationArray
System.arraycopy(sourceArray, 0, destinationArray, 0, sourceArray.length);
// 输出结果
System.out.println("Destination array after copying:");
for (int num : destinationArray) {
System.out.print(num + " ");
}
}
}
使用 Arrays.copyOf()
方法:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] sourceArray = {1, 2, 3, 4, 5};
// 使用 Arrays.copyOf() 方法复制整个数组
int[] destinationArray1 = Arrays.copyOf(sourceArray, sourceArray.length);
// 使用 Arrays.copyOf() 方法复制部分数组(前三个元素)
int[] destinationArray2 = Arrays.copyOf(sourceArray, 3);
// 输出结果
System.out.println("Destination array 1 after copying:");
for (int num : destinationArray1) {
System.out.print(num + " ");
}
System.out.println("\nDestination array 2 after copying:");
for (int num : destinationArray2) {
System.out.print(num + " ");
}
}
}
注意事项:
- 数组在声明后必须初始化才能使用,否则会抛出
NullPointerException
异常。 - 数组的大小是固定的,一旦创建后就不能改变,如果需要动态调整大小,可以使用
ArrayList
类。
修改原始数组:
- 由于传递的是数组的引用(就看作指针),因此在方法内部对数组的修改会影响到原始数组。例如,如果在方法内部修改了数组的元素值,这些修改也会反映在原始数组上。