当前位置: 移动技术网 > IT编程>开发语言>Java > 简谈Java传值传引用

简谈Java传值传引用

2019年05月18日  | 移动技术网IT编程  | 我要评论
本随笔旨在强化理解传值与传引用 如下代码的运行结果 其中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); } }

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网