欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

简谈Java传值传引用

程序员文章站 2022-04-08 22:42:41
本随笔旨在强化理解传值与传引用 如下代码的运行结果 其中i没有改变,s也没有改变。 但model中的值均改变了。 i :100s :hellomodel :testchangemodel2 :changeModel i :100s :hellomodel :testchangemodel2 :cha ......

本随笔旨在强化理解传值与传引用

 
如下代码的运行结果
其中i没有改变,s也没有改变。
但model中的值均改变了。

i :100
s :hello
model :testchange
model2 :changemodel

java中的形参是复制实参在栈中的一份拷贝,所以在函数中改变形参是无法改变实参的值的,改变引用只是将形参所代表的引用指向另外的新的对象,而实参的引用还指向原来的对象,改变形参引用的对象当然会影响实参引用对象的值,因为他们的引用都指向同一个对象。
 

 


package newtest; public class testman { class model { int i = 0; public string s = "no value"; } public static void changeint(int i) { i = 10; } public static void changestring(string s) { s = "test"; } public static void changemodel(model model) { model.i = 10; model.s = "testchange"; } public static void changemodel2(model model) { model.i = 10; model.s = "changemodel"; } public static void main(string[] args) { int i = 100; string s = "hello"; model model = new testman().new model(); model model2 = new testman().new model(); changeint(i); system.out.println("i :" + i); changestring(s); system.out.println("s :" + s); changemodel(model); system.out.println("model :" + model.s); changemodel2(model2); system.out.println("model2 :" + model2.s); } }