一维数组内存分析

Java虚拟机的内存划分

为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

区域名称

作用

虚拟机栈

用于存储正在执行的每个Java方法的局部变量表等。局部变量表存放了编译期可知长度<br/>的各种基本数据类型、对象引用,方法执行完,自动释放。

堆内存

存储对象(包括数组对象),new来创建的,都存储在堆内存。

方法区

存储已被虚拟机加载的类信息、常量、(静态变量)、即时编译器编译后的代码等数据。

本地方法栈

当程序中调用了native的本地方法时,本地方法执行期间的内存区域

程序计数器

程序计数器是CPU中的寄存器,它包含每一个线程下一条要执行的指令的地址

 

一维数组在内存中的存储

一个一维数组内存图newint[3];

      System.out.println(arr);//[I@5f150435

数组下标为什么是0开始:因为第一个元素距离数组首地址间隔0个单元格。

两个一维数组内存图

两个数组独立

    int[] arr = new int[3];
    int[] arr2 = new int[2];
    System.out.println(arr);
    System.out.println(arr2);

两个变量指向一个一维数组

两个数组变量本质上代表同一个数组。

    // 定义数组,存储3个元素
    int[] arr = new int[3];
    //数组索引进行赋值
    arr[0] = 5;
    arr[1] = 6;
    arr[2] = 7;
    //输出3个索引上的元素值
    System.out.println(arr[0]);
    System.out.println(arr[1]);
    System.out.println(arr[2]);
    //定义数组变量arr2,将arr的地址赋值给arr2
    int[] arr2 = arr;
    arr2[1] = 9;
    System.out.println(arr[1]);

posted @ 2023-03-31 23:00  晓枫的春天  阅读(38)  评论(0编辑  收藏  举报