一、内存图
1.堆、栈、方法区的配合示意图
2.一个数组的内存图
public static void main(String[] args) {
int[] arr1 = new int[3];
System.out.println(arr1);
System.out.println(arr1[1]);
arr1[1] =100;
System.out.println(arr1[1]);
}
3.两个数组的内存图
public static void main(String[] args) {
int[] arr1 = new int[3];
System.out.println(arr1);
System.out.println(arr1[1]);
arr[1] =100;
System.out.println(arr1[1]);
int[] arr2 = new int[3];
System.out.println(arr2);//地址值
System.out.println(arr2[1]);
arr2[1] = 200;
System.out.println("arr1[1] = " + arr1[1]);
System.out.println("arr2[1] = " + arr2[1]);
}
4.两个数组指向同一片空间内存图
public static void main(String[] args) {
int[] arr1 = new int[3];
System.out.println(arr1);
arr1[1] =100;
int[] arr2 = arr1;
System.out.println(arr2);//地址值
arr2[1] = 200;
System.out.println("arr1[1] = " + arr1[1]);
System.out.println("arr2[1] = " + arr2[1]);
}
二、二维数组
1.二维数组的定义格式
public static void main(String[] args) {
int[][] arr1 = new int[2][2];
int[][] arr2 = new int[2][];
System.out.println();
String[][] arr3 = {{"唐僧","孙悟空","猪八戒","沙和尚"},{"刘备","关羽","张飞"},{"宋江"},{"贾宝玉","林黛玉"}};
}
注:动态初始化数组长度必须定死,静态初始化数组长度不用定义好,每一个一维数组的长度根据实际存储的数据数来确定
2.获取二维数组的长度
public static void main(String[] args) {
String[][] arr1 = {{"唐僧","孙悟空","猪八戒","沙和尚"},{"刘备","关羽","张飞"},{"宋江"},{"贾宝玉","林黛玉"}};
for (int i = 0; i < arr1.length; i++) {
//获取每一个一维数组的长度
System.out.println(arr1[i].length);
}
}
3.获取、存储二维数组中元素及遍历
public static void main(String[] args) {
//获取二维数组中的元素
String[][] arr1 = {{"唐僧","孙悟空","猪八戒","沙和尚"},{"刘备","关羽","张飞"},{"宋江"},{"贾宝玉","林黛玉"}};
System.out.println(arr1[0][1]);
System.out.println(arr1[1][0]);
System.out.println(arr1[2][0]);
System.out.println(arr1[3][0]);
}
多行列数对齐操作:ALT键不放鼠标下拉
public static void main(String[] args) {
String[][] arr1 = {{"唐僧","孙悟空","猪八戒","沙和尚"},{"刘备","关羽","张飞"},{"宋江"},{"贾宝玉","林黛玉"}};
for (int i = 0; i < arr1.length; i++) {
//获取每一个一维数组的长度
System.out.print(arr1[i].length +" ");
for (int j = 0; j < arr1[i].length; j++) {
System.out.print(arr1[i][j]+" ");
}
System.out.println();
}
}