注:本文是对《疯狂Java面试讲义》的小结。
int[] arr1 = new int[3];
注意:动态初始化所创建的数组,其元素都有初始值(0、false、null等)。
int[] arr2 = new int[] {111, 222, 333};
int[] arr2 = {111, 222, 333};
方式1和方式2不能混用。
创建数组对象时,必须指定长度,可以显式(方式1)或隐式(方式2)指定。
// 创建数组对象时,必须指定长度
int[] arr1 = new int[]; // 编译错误
数组对象创建后,其内存空间和数组长度都是不可变的(JavaScript的数组长度是动态可变的)。
使用 arr1.length
来获取数组长度(注意不要加括号)。
数组的长度可以是0:
int[] arr1 = new int[0];
int[] arr2 = new int[] {};
数组可以为空:
int[] arr1 = null;
我们知道,Java对象是引用类型。 new
所创建的对象是在内存堆里创建的。数组对象也是 new
出来的,和其它Java对象并无本质区别。比如:
arr1 = new int[3]; // arr1引用一个数组对象
arr1 = new int[4]; // arr1引用另一个数组对象
arr2 = arr1; // arr2和arr1指向同一个数组对象
可用 Arrays
类来操作数组,比如:
Arrays.sort(arr1)
:排序Arrays.stream(arr1)
:获取流Arrays.asList(arr1)
:把数组转换为List,反过来是 list.toArray()
Arrays.toString(arr1)
:把数组转换为一个字符串,方便打印,比如 [1, 2, 3, 4, 5]
Arrays.fill(arr1, 8)
:把数组里的每个元素都赋值数组的本质是一维数组,其中的每个元素又是一个数组。
也就是说,有1个高维数组对象,和N个低维数组对象。
比如:
int[][] arr3 = new int[3][5];
arr3
是一个长度为3的数组,其中每个元素是一个长度为5的数组。
System.out.println(arr3.length); // 3
System.out.println(arr3[0].length); // 5
注意,高维在左边,低维在右边。
对于数组中的高维来说,数组中每个元素又是一个数组(低维数组),每个低维数组的长度可以各不相同(甚至可以不初始化)。
看下面数组的例子:
int[][] arr4 = new int[3][5]; // 高维数组的长度为3,低维数组的长度为5
arr4[2] = new int[6]; // 只要高维数组的每个元素是int[]就OK,长度不限
int[][] arr5 = new int[3][]; //高维数组的长度为3,低维数组对象并没有被创建
arr5[0] = new int[5]; //创建低维数组对象
arr5[1] = new int[6]; //创建低维数组对象
// 高维数组的长度为2,低维数组的长度为3和4
int[][] arr6 = new int[][] {{111, 222, 333}, {444, 555, 666, 777}};
// 高维数组的长度为2,低维数组的长度为0
int[][] arr7 = new int[][] {{}, {}};
// 高维数组的长度为3,前两个低维数组为空,最后一个低维数组长度为0
int[][] arr8 = new int[][] {null, null, {}};
下面是一些错误的例子:
// 创建数组对象时,必须指定长度
// (对于数组,只需指定最高维的长度,低维数组对象是高维数组的元素,可以先不创建)
int[][] arr9 = new int[][]; // 编译错误
// 创建数组对象时,必须指定长度
int[][] arr10 = new int[][2]; // 编译错误
// 两种初始化方式不能混用
int[][] arr11 = new int[2][3] {{111, 222, 333}, {444, 555, 666}}; // 编译错误
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务