1、写出一维数组初始化的两种方式(静态初始化、动态初始化)
int[] arr = new int[]{1,2,3}; //静态初始化,
int[] arr1 = new int[5]; //动态初始化,没有确定数组元素是多少
数组一旦初始化,其长度是确定不可修改的,如果非要修改,必须创建一个新的数组然后将arr数组一一赋值给新数组。arr.length
2、写出二维数组(数组的元素仍然是数组)初始化的两种方式
//静态初始化
int[][] arr = new int[][]{{1,2,3},{4,5,6,7},{8,9}};
//动态初始化两种方式
int[][] arr1 = new int[4][5]; //内层数组元素个数已知
int[][] arr2 = new int[5][]; //内层数组元素个数未知
3、如何遍历如下的二维数组
int[] arr[] = new int[][]{{1,2,3},{4,5},{6,7,8}};
程序如下:
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();
}
4、不同类型的一维数组元素的默认初始化值各是多少
5、一维数组的内存解析
String[] strs = new String[5];
strs[2] = "Tom";
strs = new String[3];
System.out.println(strs[2]); //null
第一步:栈空间中 strs 入栈,在堆空间中开辟一块长度为 5 的连续内存空间作为数组,将该数组的首地址值赋给栈空间的 strs 变量,数组的元素全部都赋值默认值。
第二步:将 strs[2] 的默认值 “null” 修改为 “Tom”。(实际上这里的 Tom 值是放置在方法区的常量池中,这里没有详细讲解,而原本 “null” 值替换成放置 “Tom” 的地址值)
第三步:在堆空间中重新创建一个长度为 3 的数组,将首地址值赋给 strs ,数组的元素全部赋值默认值。