java方法参数中的值传递和引用传递的问题
1、参数为基本数据类型,为值传递,方法内部改变参数的值,外部变量不会发生变化。
当执行方法时,将基本数据类型的值存放在当前方法执行的栈帧中,当在方法中改变其值的时候,只是改变了当前栈帧中的值,外部数据不会发生变话。
2、参数为引用类型,为引用传递,方法内部改变参数的值,外部变量会随之发生变换。
引用类型存放在堆空间中,当执行方法时,将参数的地址放入栈帧中,此时改变参数的值(在不创建新的对象的情况),是直接改变堆空间中引用类型的值,外部数据会随之发生变化。
3、参数为基本数据类型的包装类型,为引用传递,方法内部改变参数的值,外部变量不会发生变换。
包装类型虽然为引用传递,但由于纯在自动装箱的问题,在改变包装类对象的值时,会创建一个新的对象,从而使栈帧中的地址指向新的对象,原有的包装类对象并没有发生改变,因此外部数据不会发生变化。
总之,基本数据类型为值传递,方法内部改变参数值,外部变量不会发生变化;引用数据类型为引用传递,在不创建新的对象的情况下,改变参数的值都是改变堆空间中的原始的数据值,外部变量的值会发生变化。
posted on 2020-12-16 17:10 SilenceAries 阅读(281) 评论(0) 收藏 举报
浙公网安备 33010602011771号