数组及数组JVM内存划分day4



 java中第一个存储数据的容器:数组
    特点:
        1、数组的长度大小是固定的
        2、同一个数组中,存储的元素数据类型是一样的

    数组的定义语句格式:
        数据类型[] 数组名;
        举例:int[] arr; // 定义了一个可以存储int类型的一维数组,数组名叫做arr

    数组没有初始化,无法直接使用,数组是我们第一个接触到的引用数据类型
    如何对数组进行初始化?
        动态初始化:先规定数组的大小,数组中的元素先系统赋默认值,后续再自己赋值
        静态初始化:自己将数据赋值,大小由系统根据我们赋值的数量来决定

    JVM内存的划分:Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
      栈 存储局部变量
      堆 存储new出来的东西
      方法区 (面向对象部分讲)
      本地方法区 (和系统相关)
      寄存器 (给CPU使用)



    动态初始化:
        语句定义格式:
            数据类型[] 数组名 = new 数据类型[数组的大小];
            举例:int[] arr = new int[3];
        白话文解释:创建了一个可以存储3个int类型元素大小的数组,数组名叫做arr
        专业术语解释:在堆内存中开辟一个连续空间大小为3的数组对象,将地址值赋值给栈内存中arr变量
举例:int[] arr = new int[3];
 左边:
              int: 表示存储元素的数据类型
              []: 表示这是一个一维数组
              arr: 数组名,符合标识符的命名规则,相当于变量名
            右边:
              new: 在堆内存中开辟空间,将来看到new,就意味着在堆内存中开辟空间
              int: 表示存储元素的数据类型
              []: 表示这是一个一维数组
              3: 表示该数组最多可以存储3个元素,数组长度为3
 如何获取数组中的元素?
            java中的数组具有索引下标的概念,可以通过索引获取对应位置上的元素,索引是从左向右,从0开始的
            索引最大值 = 长度-1
            语句定义格式:
                数组名[索引]
 静态初始化:
        语句定义格式:
            数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3,....};
            举例:int[] arr1 = new int[]{11,22,33,44,55,66};
        简化格式:
            数据类型[] 数组名 = {元素1,元素2,元素3,....};
            举例: int[] arr1 = {11,22,33,44,55,66};

   注意:
        静态初始化简化写法,无法拆开进行初始化,必须将初始化与定义在同一行,由一个赋值=语句进行赋值;
        而非简化写法,可以拆开定义和初始化。


二维数组:元素为一维数组的数组

    语句定义格式1:
        数据类型[][] 变量名 = new 数据类型[m][n];
        举例:int[][] arr = new int[3][4];
        创建了可以存储3个长度为4的一维数组的数组,元素的类型是int类型

二维数组的语句定义格式2:当二维数组中的每个一维数组的长度不一样的时候,可以采用该种方式定义
        数据类型[][] 变量名 = new 数据类型[m][];
        m: 指的是二维数组中可以存储m个一维数组
        将来我们可以自己创建一维数组,将地址值赋值给对应的二维数组中的元素

创建二维数组的同时,赋值一维数组
    语句定义格式3:
        数据类型[][] 变量名 = new 数据类型[][]{{元素1,元素2,元素3,...}, {}, {},...};
    简化
        数据类型[][] 变量名 = {{元素1,元素2,元素3,...}, {}, {},...};
二维数组的遍历
public class Array2Test1 {
    public static void main(String[] args) {
        //创建一个二维数组
        int[][] arr6 = {{11, 22, 33, 44}, {1, 2, 3}, {100, 200, 300, 400, 500}};
        for (int i = 0; i < arr6.length; i++) { // 外层循环控制的是遍历第几个一维数组元素
            for (int j = 0; j < arr6[i].length; j++) { // 内层循环控制的是每一个一维数组中元素的遍历
                if (j == 0) {
                    System.out.print("[" + arr6[i][j] + ", ");
                } else if (j == arr6[i].length - 1) {
                    System.out.print(arr6[i][j] + "]");
                } else {
                    System.out.print(arr6[i][j] + ", ");
                }

            }
            //换行
            System.out.println();
        }
    }
}


posted @ 2024-07-30 22:15  ていせい  阅读(7)  评论(0编辑  收藏  举报