Loading... # JVM内存划分 也被称为Java运行时数据区域。Java程序在运行的时候,会根据数据类型等内容的不同,来将JVM划分了不同的区域,这些区域有不同的产生以及销毁时间(也就是说这些空间的生命周期不同)。这些空间存放了不同种类的数据。这些空间有以下几种: - 堆 - 栈 - 方法区 - 本地方法区 - 程序计数器 ![image-20201120095400795.png][1] > - 栈:主要用来存放局部变量,还有引用。比如int a,int[] arr{ a 和arr 在栈} > - 堆:存放的都是较大的数据,例如存放new出来的内容,包括了所有的对象以及数组 > - 方法区:里面主要存放字节码对象、方法、常量、静态的变量 > - 本地方法区:主要用来存放一些本地方法。例如c、c++ > - 程序计数器:控制程序的执行顺序,比如说:分支结构、循环结构、异常等的控制和执行 > > 常用的是堆、栈、和方法区 # 数组内存图 一个数组的内存图 ![image-20201120101038973.png][2] 两个方法的内存图 ![image-20201120101607635.png][3] 两个引用指向同一个数组 ![image-20201120102612623.png][4] # 数组的常见操作 ## 数组的遍历 将数组的元素一次打印出来 获取数组长度的方法:数组名.length; ## 获取数组中最大值 ```java public static void main(String[] args) { int[] arr = {2,4,6,8,-91,3,432,54,5867,986,43,2143,34,-536234,77643,324}; int max = arr[0]; for(int i=0;i<arr.length;i++) { max = (max<arr[i]?arr[i]:max); } System.out.println(max); } ``` ## 数组的逆序(反转) ```java package com.zunmx; // ALC-Master public class Demo5 { public static void main(String[] args) { int[] a = new int[] { 10, 20, 30, 40, 50 }; for (int i = 0; i < a.length / 2; i++) { int t = a[i]; a[i] = a[a.length - 1 - i]; a[a.length - 1 - i] = t; } System.out.println("第一次交换"); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println( ); System.out.println("第二次交换"); int[] b = new int[5]; for (int i = 0; i < a.length; i++) { b[i] = a[a.length - 1 - i]; } a = b; for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(); } } ``` ## 数组查找 新建一个方法,传入来给你个参数,一个参数为被查找的数组,一个参数为要查找的数。如果能找到就返回该数在数组中的索引,如果找不到就返回-1 [1]: https://www.zunmx.top/usr/uploads/2021/04/3198782346.png [2]: https://www.zunmx.top/usr/uploads/2021/04/618872294.png [3]: https://www.zunmx.top/usr/uploads/2021/04/4015519474.png [4]: https://www.zunmx.top/usr/uploads/2021/04/224884516.png © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏