一维数组

数组的本质是内存中连续的存储单元。数组内的元素类型必须相同。

int[] arr = new int[5];
int[] arr2 = new int[] {1,2,3,4,5};
int[] arr3 = {6,7,8};

数组支持随机访问,但增加、删除元素很慢。
想要增加、删除元素快,应该考虑链表。

heap and stack

在java里,局部变量通常在栈区,new出来的对象、数组通常在堆区。

数组拷贝

System.arraycopy(arr1, 0, arr2, 0, arr1.length);

工具类

// import java.util.Arrays;
int[] arr = new int[10];
Arrays.fill(arr, 5);
System.out.println(Arrays.toString(arr));
Arrays.sort(arr); //可以自己写个Compartor
System.out.println(Arrays.binarySearch(arr, 5));

二维数组

由多个一维数组摞起来的数组

//初始化
int[][] arr = new int[][]{{1,2},{3,4}};
//锯齿数组
int[][] arr2 = new int[2][];
arr2[0] = new int[5];
arr2[1] = new int[6];
//赋值要循环
int[][] arr = new int[5][5];
for (int i=0; i<arr.length; i++) {
    Arrays.fill(arr[i], 6);
}