java将数组作为参数,传递修改值问题
初学方法数组传值问题,不多废话,直接代码
方法的返回值都为空
所以在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相同,所以他们在堆中访问相同的数组,对应的操作,也是操作同一个数组,所以无论在哪一个方法中做操作,另一个也会发生相同的改变。
原文作者:爱好Java的小学生
原文地址: https://blog.csdn.net/weixin_42458615/article/details/99616938
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/weixin_42458615/article/details/99616938
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章