Java数组与二维数组学习笔记
一、一维数组
1. 数组的定义和创建
int[] arr1;
arr1 = new int[5];
int[] arr2 = new int[5];
int[] arr3 = {
1, 2, 3, 4, 5};
int[] arr4 = new int[]{
1, 2, 3, 4, 5};
2. 数组的访问
- 通过索引访问:
arr[index]
- 索引从0开始,最大索引为
length-1
- 获取数组长度:
arr.length
3. 数组的遍历
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
for(int element : arr) {
System.out.println(element);
}
4. 数组的特点
- 数组是引用数据类型
- 数组在内存中是连续存储的
- 数组长度固定不变
- 数组元素类型必须一致
二、二维数组
1. 二维数组的定义和创建
int[][] arr1 = new int[3][4];
int[][] arr2 = new int[3][];
arr2[0] = new int[2];
arr2[1] = new int[3];
arr2[2] = new int[4];
int[][] arr3 = {
{
1,2},{
3,4,5},{
6,7,8,9}};
2. 二维数组的访问
- 通过双重索引访问:
arr[row][column]
- 获取行数:
arr.length
- 获取某行的列数:
arr[row].length
3. 二维数组的遍历
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
for(int[] row : arr) {
for(int element : row) {
System.out.print(element + " ");
}
System.out.println();
}
三、数组在内存中的存储
1. 一维数组内存分析
- 数组变量存储在栈内存中,保存堆内存地址
- 数组元素存储在堆内存中
- 数组名实际是数组对象的引用
2. 二维数组内存分析
- 二维数组在内存中是"数组的数组"
- 外层数组存储的是内层一维数组的引用地址
- 内层每个一维数组在堆内存中独立存储
四、常见数组操作
1. 数组复制
int[] src = {
1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, 5);
import java.util.Arrays;
int[] newArray = Arrays.copyOf(src, src.length);
2. 数组排序
import java.util.Arrays;
int[] arr = {
5, 2, 8, 1, 9};
Arrays.sort(arr);
五、注意事项
- 创建数组时必须指定长度
- 数组元素有默认值(整数为0,浮点数为0.0,布尔值为false,引用类型为null)
- 二维数组可以是规则的也可以是不规则的