java将数组作为参数,传递修改值问题

本文深入探讨Java中数组和引用变量的特性,通过实例解释了数组作为引用变量时,不同方法间如何共享数据并相互影响。揭示了Java内存模型下,栈内存与堆内存的交互机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初学方法数组传值问题,不多废话,直接代码
在这里插入图片描述
方法的返回值都为空
所以在main方法中不会有返回值,最后的结果应该在控制台输出10和10
但是
在这里插入图片描述
       这里还是涉及到java 的内存模型,当程序运行时,会在栈内存中,压进三个栈帧,main方法,getX()方法和getY()方法的栈帧,main方法会先在栈帧中生成两个变量 数组x和变量y ,首先我们来说getY()方法,main方法栈帧中的y值为10, 要调用getY()方法,把y值传给他,所以getY()方法栈帧中的y等于10,之后getY()中的y乘 3 ,变成30,之后没有和main方法中的y有任何操作,所以main方法中的y最后输出的值为10,。
        之后再来说getX()方法,因为x的类型为数组,数组是引用变量类型,所以在main栈帧中存储的是 hashcode 值,根据栈帧中的hashcode值,去堆中找对应的数组,当调用getX()方法时,把数组x传给getX()的形参,在栈中传递的也是hashcode值,在getX()栈帧中,存储的是一个和main栈帧中x相同hashcode的数组,因为两个数组hashcode相同,所以他们在堆中访问相同的数组,对应的操作,也是操作同一个数组,所以无论在哪一个方法中做操作,另一个也会发生相同的改变。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值