简谈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); } }
下一篇: hibernate详解一