初始JVM和关于java中数组的相关问题详解

简介: 对JVM的初步认识和对数组问题的小总结

一.初识JVM

image.gif编辑

其中,需要更详细说明的是关于虚拟机栈:虚拟机栈的栈帧包括局部变量表,操作数栈,动态链接以及返回地址和其他信息等等,而关于它的具体细节处理如下

image.gif编辑

二.关于数组的相关细节及问题

1.for-each循环

语法格式如下:

int[]arr={1,2,3};

for(int x:arr){

System.out.print(x);

}

其中需要注意的是:x只是对arr数组元素内容的拷贝,对x进行的任何操作无法对arr实际的元素产生任何影响

2.关于形式参数的传递问题

java只存在值的传递,不像c语言那样存在地址的传递,而具体分为两类①基本数据类型的传递②引用数据类型的传递,这也就意味着形式参数将永远是形式参数的一份临时拷贝

我们将具体讨论引用数据类型的传递的两种情况:

①不能通过修改形式参数来达到修改实际参数

具体如下:

image.gif编辑

image.gif编辑

②修改指向空间的内容,修改生效

image.gif编辑③二维数组的杨辉三角

image.gif编辑

public static void main(String[] args) {

yangHuiTriangle(5);


   }

   //杨辉三角的实现

   public static void yangHuiTriangle(int num){

       int[][]arr=new int[num][];

       //设置初始化

       for (int i = 0; i < num; i++) {

           arr[i]=new int[i+1];

       }

       //对杨辉三角进行赋值

       for (int i = 0; i < arr.length ; i++) {

           for (int j = 0; j <arr[i].length ; j++) {

               if (j==0||i==j){

                   arr[i][j]=1;

               }

               else {

                   arr[i][j]=arr[i-1][j]+arr[i-1][j-1];

               }

           }

       }

       //打印杨辉三角

       for (int i = 0; i < arr.length ; i++) {

           for (int j = 0; j < arr[i].length ; j++) {

               System.out.print(arr[i][j]+" ");

           }

           System.out.println();


       }

   }

相关文章
|
3月前
|
存储 缓存 Java
Java数组全解析:一维、多维与内存模型
本文深入解析Java数组的内存布局与操作技巧,涵盖一维及多维数组的声明、初始化、内存模型,以及数组常见陷阱和性能优化。通过图文结合的方式帮助开发者彻底理解数组本质,并提供Arrays工具类的实用方法与面试高频问题解析,助你掌握数组核心知识,避免常见错误。
|
2月前
|
Java
Java 数组学习笔记
本文整理Java数组常用操作:遍历、求和、查找、最值及二维数组行求和等典型练习,涵盖静态初始化、元素翻倍、去极值求平均等实例,帮助掌握数组基础与应用。
|
7月前
|
监控 Java Unix
6个Java 工具,轻松分析定位 JVM 问题 !
本文介绍了如何使用 JDK 自带工具查看和分析 JVM 的运行情况。通过编写一段测试代码(启动 10 个死循环线程,分配大量内存),结合常用工具如 `jps`、`jinfo`、`jstat`、`jstack`、`jvisualvm` 和 `jcmd` 等,详细展示了 JVM 参数配置、内存使用、线程状态及 GC 情况的监控方法。同时指出了一些常见问题,例如参数设置错误导致的内存异常,并通过实例说明了如何排查和解决。最后附上了官方文档链接,方便进一步学习。
1010 4
|
3月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
308 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
4月前
|
存储 Java 索引
java 数组
在 Java 中,数组是一种数据结构,用于存储多个相同类型的数据元素。数组的大小一旦创建后就不能改变,因此它是固定长度的。Java 数组是一种 对象,即使它存储的值是基本类型(如 int、double 等),它也是一个对象引用。
141 0
|
4月前
|
存储 运维 Kubernetes
Java启动参数JVM_OPTS="-Xms512m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError"
本文介绍了Java虚拟机(JVM)常用启动参数配置,包括设置初始堆内存(-Xms512m)、最大堆内存(-Xmx1024m)及内存溢出时生成堆转储文件(-XX:+HeapDumpOnOutOfMemoryError),用于性能调优与故障排查。
436 0
|
6月前
|
存储 监控 算法
Java程序员必学:JVM架构完全解读
Java 虚拟机(JVM)是 Java 编程的核心,深入理解其架构对开发者意义重大。本文详细解读 JVM 架构,涵盖类加载器子系统、运行时数据区等核心组件,剖析类加载机制,包括加载阶段、双亲委派模型等内容。阐述内存管理原理,介绍垃圾回收算法与常见回收器,并结合案例讲解调优策略。还分享 JVM 性能瓶颈识别与调优方法,分析 Java 语言特性对性能的影响,给出数据结构选择、I/O 操作及并发同步处理的优化技巧,同时探讨 JVM 安全模型与错误处理机制,助力开发者提升编程能力与程序性能。
Java程序员必学:JVM架构完全解读
|
8月前
|
存储 缓存 算法
JVM简介—1.Java内存区域
本文详细介绍了Java虚拟机运行时数据区的各个方面,包括其定义、类型(如程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区和直接内存)及其作用。文中还探讨了各版本内存区域的变化、直接内存的使用、从线程角度分析Java内存区域、堆与栈的区别、对象创建步骤、对象内存布局及访问定位,并通过实例说明了常见内存溢出问题的原因和表现形式。这些内容帮助开发者深入理解Java内存管理机制,优化应用程序性能并解决潜在的内存问题。
395 29
JVM简介—1.Java内存区域
|
10月前
|
存储 Java 索引
Java快速入门之数组、方法
### Java快速入门之数组与方法简介 #### 一、数组 数组是一种容器,用于存储同种数据类型的多个值。定义数组时需指定数据类型,如`int[]`只能存储整数。数组的初始化分为静态和动态两种: - **静态初始化**:直接指定元素,系统自动计算长度,如`int[] arr = {1, 2, 3};` - **动态初始化**:手动指定长度,系统给定默认值,如`int[] arr = new int[3];` 数组访问通过索引完成,索引从0开始,最大索引为`数组.length - 1`。遍历数组常用`for`循环。常见操作包括求和、找最值、统计特定条件元素等。