【Java探索之旅】数组使用 初探JVM内存布局

马肤
这是懒羊羊
【Java探索之旅】数组使用 初探JVM内存布局,个人头像,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,操作,程序,进行,第1张 🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天!

文章目录

  • 📑前言
  • 一、数组的使用
    • 1.1 元素访问
    • 1.2 数组遍历
    • 二、JVM的内存布局
    • 🌤️全篇总结

      📑前言

      使用数组,包括元素访问和数组遍历,是编程学习的基础之一。同时,理解JVM的内存布局对于初学者来说也是至关重要的,特别是对堆和虚拟机栈这两块空间的认识,有助于更好地理解程序运行时的内存管理和数据存储。

      一、数组的使用

      1.1 元素访问

      数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素。

      int[]array = new int[]{10, 20, 30, 40, 50};
      System.out.println(array[0]);
      System.out.println(array[1]);
      System.out.println(array[2]);
      System.out.println(array[3]);
      System.out.println(array[4]);
      // 也可以通过[]对数组中的元素进行修改
      array[0] = 100;
      System.out.println(array[0]);
      

      注意事项:

      1. 数组是一段连续的内存空间,因此支持随机访问,即通过下标访问快速访问数组中任意位置的元素
      2. 下标从0开始,介于[0, N)之间不包含N,N为元素个数,不能越界,否则会报出下标越界异常。
      int[] array = {1, 2, 3};
      System.out.println(array[3]); // 数组中只有3个元素,下标一次为:0 1 2,array[3]下标越界
      // 执行结果
      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100
              at Test.main(Test.java:4)
      

      抛出了 java.lang.ArrayIndexOutOfBoundsException 异常. 使用数组一定要下标谨防越界.

      1.2 数组遍历

      “遍历” 是指将数组中的所有元素都访问一遍, 访问是指对数组中的元素进行某种操作,比如:打印。

      在数组中可以通过 数组对象.length 的方式来获取数组的长度。

      int[] array = new int[] {1,2,3,4,5,6};
      //for循环遍历
      for (int i = 0; i  
      

      for-each(依次取array的元素,然后自增) 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错。

      二、JVM的内存布局

      内存是一段连续的存储空间,主要用来存储程序运行时数据的。比如:

      1. 程序运行时代码需要加载到内存
      2. 程序运行产生的中间数据要存放在内存
      3. 程序中的常量也要保存
      4. 有些数据可能需要长时间存储,而有些数据当方法运行结束后就要被销毁

      如果对内存中存储的数据不加区分的随意存储,那对内存管理起来将会非常麻烦

      如下图:

      【Java探索之旅】数组使用 初探JVM内存布局,在这里插入图片描述,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,操作,程序,进行,第2张

      内存可以想象是你的房间,如果房间里面的东西都是杂乱无章的乱放,等你需要找一件物品的时候,就需要翻遍整个房间。

      因此JVM也对所使用的内存按照功能的不同进行了划分:

      【Java探索之旅】数组使用 初探JVM内存布局,在这里插入图片描述,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,操作,程序,进行,第3张

      • 程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址
      • 虚拟机栈(JVM Stack): 与方法调用相关的一些信息,每个方法在执行时,都会先创建一个栈帧,栈帧中包含有:局部变量表、操作数栈、动态链接、返回地址以及其他的一些信息,保存的都是与方法执行时相关的一些信息。比如:局部变量。当方法运行结束后,栈帧就被销毁了,即栈帧中保存的数据也被销毁了。
      • 本地方法栈(Native Method Stack): 本地方法栈与虚拟机栈的作用类似. 只不过保存的内容是Native方法的局部变量. 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的
      • 堆(Heap): JVM所管理的最大内存区域. 使用 new 创建的对象都是在堆上保存 (例如前面的 new int[]{1, 2,3} ),堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销毁。
      • 方法区(Method Area): 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据. 方法编译出的的字节码就是保存在这个区域

        对于前期的初学者来说不需要关注上述所有,理解堆和虚拟机栈这两块空间就够了。

        🌤️全篇总结

        数组作为编程中常用的数据结构,具有重要的作用和灵活性,通过掌握数组的使用方法,我们可以高效地处理大量数据。元素访问和数组遍历是数组操作中常见的技巧,能够帮助我们更好地利用数组的功能。此外,了解JVM的内存布局,特别是堆和虚拟机栈的作用,对于理解程序运行时的内存管理至关重要。

        【Java探索之旅】数组使用 初探JVM内存布局,在这里插入图片描述,词库加载错误:未能找到文件“C:\Users\Administrator\Desktop\火车头9.8破解版\Configuration\Dict_Stopwords.txt”。,操作,程序,进行,第4张


文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复:表情:
评论列表 (暂无评论,0人围观)

还没有评论,来说两句吧...

目录[+]

取消
微信二维码
微信二维码
支付宝二维码