Java--数组原理内存图

文章目录

  • 前言
  • 内容
    • 1. Java虚拟机的内存划分
    • 2. 数组在内存中的存储
  • 总结
  • end

前言

内存是计算机中的重要原件,临时存储区域,作用是运行程序。我们编写的程序是存放在硬盘中的,在硬盘中的程
序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存。

Java虚拟机要运行程序,必须要对内存进行空间的分配和管理。

内容

1. Java虚拟机的内存划分

为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
Java--数组原理内存图_第1张图片
JVM的内存划分:

区域名称 作用
寄存器 给CPU使用,和我们开发无关。
本地方法栈 JVM在使用操作系统功能的时候使用,和我们开发无关。
方法区 存储可以运行的class文件。
堆内存 存储对象或者数组,new来创建的,都存储在堆内存。
方法栈 方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

2. 数组在内存中的存储

一个数组内存图

 public class Demo04 {
     
    public static void main(String[] args) {
     
        int[] arr = new int[3];
        System.out.println(arr); // [I@50cbc42f
        arr[1] = 2;
        System.out.println(arr[1]);
    }
}

以上方法执行,输出的结果是[I@5f150435,这个是什么呢?是数组在内存中的地址。new出来的内容,都是在堆内存中存储的,而方法中的变量arr保存的是数组的地址。 输出arr[0],就会输出arr保存的内存地址中数组中0索引上的元素.
Java--数组原理内存图_第2张图片
两个数组内存图

 public static void main(String[] args) {
     
    int[] arr1 = new int[2];
    int[] arr2 = new int[3];
    System.out.println(arr1);
    System.out.println(arr1[0]);
    System.out.println(arr1[1]);
    System.out.println(arr2);
    System.out.println(arr2[0]);
    System.out.println(arr2[1]);
    System.out.println(arr2[2]);
    // 给arr1数组的索引为0元素赋值100      
    arr1[0] = 100;
    // 给arr2数组的索引为0元素赋值200      
    arr2[0] = 200;
    System.out.println("‐‐‐‐‐‐‐‐‐‐‐");
    System.out.println(arr1);
    System.out.println(arr1[0]);
    System.out.println(arr1[1]);
    System.out.println(arr2);
    System.out.println(arr2[0]);
    System.out.println(arr2[1]);
    System.out.println(arr2[2]);
}

Java--数组原理内存图_第3张图片
两个变量指向一个数组

 public static void main(String[] args) {
     
    int[] arr = new int[3];
    arr[0] = 100;
    arr[1] = 200;
    arr[2] = 300;
    System.out.println(arr);
    System.out.println(arr[0]);
    System.out.println(arr[1]);
    System.out.println(arr[2]);
    // 定义数组变量arr2,将arr的地址赋值给arr2
    // arr和arr2指向堆中同一个数组
    int[] arr2 = arr;
    arr2[0] = 111;
    arr2[1] = 222;
    arr2[2] = 333;
    System.out.println(arr);
    System.out.println(arr[0]);
    System.out.println(arr[1]);
    System.out.println(arr[2]);
    System.out.println(arr2);
    System.out.println(arr2[0]);
    System.out.println(arr2[1]);
    System.out.println(arr2[2]);
}

Java--数组原理内存图_第4张图片

总结

这是关于数据介绍的第二篇总结,接下来还有两篇。
Java–数组的定义和访问
Java–数组的常见操作
Java–数组作为方法参数和返回值

end

谢谢您的阅读!

你可能感兴趣的:(简单基础,Java,Java)