问题描述
上次发过一个帖子关于抽象的,谢谢各位大大的鞭策使小弟从误区中走出,这次还请各位大大帮忙看看,java初学者不怕鞭策!!classx{intnum;}classy{publicstaticvoidmain(String[]args){xz=newx();X(z);}publicstaticvoidX(xh){h.num=50;}}就是关于上面这种代码X的,X方法的参数列表框中的h是一个x类的引用,当主函数调用它并将z传递给它的时候完成了这么一个操作h=z,也就是将z指向的对象赋给h,双方指向同一个对象,当h将对象中的变量num修改后就等于z指向的对象中的变量num被修改。对不对???不怕打击,求各位大大鞭策!!!
解决方案
本帖最后由 Anderson221317 于 2014-12-05 17:00:31 编辑
解决方案二:
是的
解决方案三:
建议你看马士兵老师的视频,他对这些说的很清楚!
解决方案四:
X(z);这里的z是实参,方法X中的h是形参,当参数传递的时候,也就是你所说的双方指向同一对象,对属性num的修改也就是传过来的z完成的。
解决方案五:
传的是引用,修改了对象。理解的没问题。
解决方案六:
是的,顺便给楼主提个建议:类名首字母大写,方法名首字母小写
解决方案七:
解决方案八:
对的,java的对象都是在堆上分配内存,方法中定义的变量只是对象的引用。传到方法里的也是对象的引用,这里修改的就是堆中真实对象的内容。
解决方案九:
java里面实际参数的传输有两种形式,值传递和地址传递。值传递的实际参数主要由基本数据类型组成,包括String。地址传递的实际参数主要由对象组成的,包括List等等。
解决方案十:
你的理解是正确的,给你贴个我做的图片参考一下,加深理解。另外,类名大写开头,方法名小写开头,这样的编程习惯最好早点儿养成,建议抽时间看看《代码大全》。