合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
>[success] # 数组 * 当需要在Java程序中记录多个类型相同的数据内容时,则声明一个一维数 组即可,一维数组本质上就是在内存空间中申请一段`连续`的存储单元。 ![](https://img.kancloud.cn/78/14/781458ee41cdfa399259f00fe76bb703_558x168.png) * 数组是相同数据类型的多个元素的容器,但需要结合**隐式类型转换**来考虑,例如`dobule `类型数组可以存`byte short int long float double` 类型,元素按线性顺序排列,在Java语 言中体现为一种`引用`数据类型 * `数据类型[] 数组名称 = new 数据类型[数组的长度];` ~~~ int[] numLs = new int[5]; ~~~ * 调用数组的length属性可以获取数组的长度: * 可以通过下标的方式访问数组中的每一个元素。需要注意的是:数组的下标从0开始,对于长度为n的数组,下标的范围是0~n-1。 >[danger] ##### 数组的声明 * **动态方法**声明 ~~~ int[] arr1 = new int[2]; // 推荐写法 int arr2[] = new int[2]; // 不推荐写法 ~~~ * **静态声明** `数据类型[] 数组名称 = {初始值1, 初始值2, ...}` ~~~ boolean[] arr4 = new boolean[]{true, true, false, false}; // 特殊写法不推荐 char[] arr3 = {'a', 'b', 'c', 'd'}; // 推荐写法,是上面写法的缩写,即定义初始值也定义了长度 ~~~ * 基本类型的数组(数据元素为基本类型)创建后,其元素的初始值: * * byte、short、char、int、long为 `0`; * * char `\u0000` 空格 * * float 和 double为 `0.0`; * * boolean 为 `false` * * 引用数据类型 为 `null` ~~~ public class ArrayTest { public static void main(String[] args) { int[] iLs = new int[5]; System.out.println(iLs[0]); // 0 byte[] bLs = new byte[5]; System.out.println(bLs[0]); // 0 short[] sLs = new short[5]; System.out.println(sLs[0]); // 0 char[] cLs = new char[5]; System.out.println(cLs[0]); // `\u0000` 实际控制台是一个空格展示 long[] lLs = new long[5]; System.out.println(lLs[0]); // 0 float[] fLs = new float[5]; System.out.println(fLs[0]); // 0.0 double[] dLs = new double[5]; System.out.println(dLs[0]); // 0.0 boolean[] boolLs = new boolean[5]; System.out.println(boolLs[0]); // false } } ~~~ * 二者区别 **静态初始化**:手动指定数组的元素,系统会根据元素的个数,计算出数组的长度。 **动态初始化**:手动指定数组长度,由系统给出默认初始化值 >[danger] ##### length 打印数组长度 ~~~ public class ArrayTest { public static void main(String[] args) { int[] iLs = new int[5]; System.out.println(iLs.length); // 5 } } ~~~ >[danger] ##### 打印数组指定项 * 超过初始化长度则数组越界报错 ~~~ public class ArrayTest { public static void main(String[] args) { int[] iLs = new int[5]; /* * 数组越界 * java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds fo length 5 */ // System.out.println(iLs[5]); System.out.println(iLs[4]); // 0 } } ~~~ >[danger] ##### 循环打印每一项 ~~~ public class ArrayTest { public static void main(String[] args) { int[] iLs = { 1, 8, 9, 0, 10 }; for (int i = 0; i < iLs.length; i++) { System.out.println(i + "----" + iLs[i]); } } } ~~~ * 打印结果 ~~~ 0----1 1----8 2----9 3----0 4----10 ~~~