欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数组及其内存分析,多维数组的本质

程序员文章站 2024-03-04 15:23:11
...

24.数组

  • 数组是相同数据类型的有序集合
  • 数组的每个元素可以通过他们的下标来访问它们
package com.demo.array;

import java.lang.reflect.Array;

public class Demo1 {
    public static void main(String[] args) {
        /*
         * 定义一个数组,
         * 数据类型[] 数组名 = {元素0,元素1,元素2,...};
         * 数据类型[] 数组名 = new 数据类型[array.length]; 可以通过arry.length这个参数来获取数组的长度
         * 数组的长度是固定的,一但创建就不可以再改变
         * */
        int[] nums; // 推荐使用,声明了一个数组
//        int nums$[];  //为了给C,C++开发者过渡
        nums = new int[10];  // 创建一个数组,这里可以存放10个int类型的数字
        nums[0] = 0;
        nums[1] = 1;
        nums[2] = 2;
        nums[3] = 3;
        nums[4] = 4;
        nums[5] = 5;
        nums[6] = 6;
        nums[7] = 7;
        nums[8] = 8;
        nums[9] = 9;

        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }

    }
}

内存分析

数组及其内存分析,多维数组的本质

数组下标越界

package com.demo.array;

public class Demo2 {
    public static void main(String[] args) {
        int[] nums = new int[10]; // 这里创建了一个长度为10的数组,即在堆中开辟了一个可以装10个int类型数据的空间
        System.out.println(nums[11]);// 访问数组中下标为11的元素,此时会报数组越界异常
    }
}
  • ArrayIndexOutOfBoundsException

数组及其内存分析,多维数组的本质

  • 两种遍历循环
package com.demo.array;

public class Demo3 {
    public static void main(String[] args) {
        int[] arrays = {1, 2, 3, 4, 5, 6};
        System.out.print("原数组:");
        printArray(arrays);  // 打印数组
        int[] newArrays = reverse(arrays);
        System.out.print("\n反转后数组:");
        printArray(newArrays);  // 打印反转后的数组
    }

    //    反转数组
    public static int[] reverse(int[] arrays) {
        int[] result = new int[arrays.length];
        for (int i = 0; i < arrays.length; i++) {
            result[arrays.length-1 - i] = arrays[i];
        }
        return result;
    }

    //    打印数组元素
    public static void printArray(int[] arrays) {
        for (int array : arrays
        ) {
            System.out.print(array + " ");
        }
    }
}

数组及其内存分析,多维数组的本质

多维数组

  • 多维数组的本质就是数组嵌套
  • 数组中再放数组
package com.demo.array;
public class Demo4 {
    public static void main(String[] args) {
        int[][] arrays = new int[3][10];  // 相当于在内存中创建了一个可以放3个元素数组,只不过这3个元素是int[]类型
        int[][] nums = {{1,2,3},{4,5,6},{7,8,9}};  
        /*
        * 相当于一个数组,它的长度是3
        * 第0个元素nums[0] 中存放了一个 int[]数组 --> {1,2,3}
        * 第1个元素nums[1] 中存放了一个 int[]数组 --> {4,5,6}
        * 第2个元素nums[2] 中存放了一个 int[]数组 --> {7,8,9}
        * */
    }
}

数组及其内存分析,多维数组的本质