Java基础 第一节 第十八课

举报
我是小白呀iamarookie 发表于 2021/09/10 23:38:11 2021/09/10
【摘要】 数组原理 内存概述Java 虚拟机的内存划分数组在内存中的存储两个数组的内存图两个变量指向一个数组 内存概述 内存是计算机中的重要原件, 也是临时存储区域, 作用是运行程序. 我们编写...

内存概述

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

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

Java 虚拟机的内存划分

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

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

数组在内存中的存储

public static void main(String[] args) {
    int[] arr = new int[3];
    System.out.println(arr);  // [I@5f150435
}

  
 
  • 1
  • 2
  • 3
  • 4

以上方法执行, 输出结果是 “[I@5f150435”, 这个是什么呢?
是数组在内存中的地址. new 出来的内容, 都是在堆内存中存储的, 而方法中的变量 arr 保存的是数组地址. 所以, 输出arr[0],就会输出arr保存的内存地址中数组中0索引上的元素.
在这里插入图片描述

两个数组的内存图

public static void main(String[] args) {
   int[] arr = new int[3];
   int[] arr2 = new int[2];
   System.out.println(arr);
   System.out.println(arr2);
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

两个变量指向一个数组

public static void main(String[] args) {
    // 定义数组,存储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]);
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这里插入图片描述

文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。

原文链接:iamarookie.blog.csdn.net/article/details/109964958

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。