数组

数组是“数”放在一组的结构,通过下标索引的方式获取到下标下对应的数据

  • 相同类型数据
  • 程序中,数组下标都是从0开始的
    • 总体数目=下表最大值 + 1
    • 数组遍历最大位置 = 方法得到的数组个数 - 1

一维数组

数组内存空间的地址是连续的,删除特定位置的后面需要前移
数组元素删除

二维数组

二维数组定义结构如下
二维数组

JAVA中输出二维数组地址:

1
2
3
4
5
6
7
public static void test_arr() {
int[][] arr = {{1, 2, 3}, {3, 4, 5}, {6, 7, 8}, {9,9,9}};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
}

得到

1
2
3
4
[I@7852e922
[I@4e25154f
[I@70dea4e
[I@5c647e05

所以Java中二维数组的存储形式可能是
Java中二维数组存储
即:
数组存在堆内存,静态函数存在栈内存
不是类似C++的存储
实际存储是每个小数组有自己的地址,数组有一份地址,存小数组的地址,静态函数指向大数组。
每个小数组有自己的地址

奇怪的数组定义方式+1
1
2
3
4
5
6
7
8
int[][] arr = new int[3][];
//**这个定义了该数组中有三个一维数组,但是数组中的元素不确定,需要再次定义**
//这个分别对数组中的小数组进行初始化
int[0] arr = new int[3];

int[1] arr = new int[2];

int[2] arr = new int[4];