请大家帮忙看看理解对与否

Anderson221317 2014-12-05 04:59:18
上次发过一个帖子关于抽象的,谢谢各位大大的鞭策使小弟从误区中走出,这次还请各位大大帮忙看看,java初学者不怕鞭策!!
class x
{
int num;
}
class y
{
public static void main(String[] args)
{
x z=new x();
X(z);
}
public static void X(x h)
{
h.num=50;
}
}
就是关于上面这种代码X的,X方法的参数列表框中的h是一个x类的引用,当主函数调用它并将z传递给它的时候完成了这么一个操作h=z,也就是将z指向的对象赋给h,双方指向同一个对象,当h将对象中的变量num修改后就等于z指向的对象中的变量num被修改。对不对???
不怕打击,求各位大大鞭策!!!
...全文
189 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
guqgyw 2014-12-07
  • 打赏
  • 举报
回复
对的,java的对象都是在堆上分配内存,方法中定义的变量只是对象的引用。传到方法里的也是对象的引用,这里修改的就是堆中真实对象的内容。
日知己所无 2014-12-07
  • 打赏
  • 举报
回复


你的理解是正确的,给你贴个我做的图片参考一下,加深理解。

另外,类名大写开头,方法名小写开头,这样的编程习惯最好早点儿养成,建议抽时间看看《代码大全》。
  • 打赏
  • 举报
回复
java里面实际参数的传输有两种形式,值传递和地址传递。 值传递的实际参数主要由基本数据类型组成,包括String。 地址传递的实际参数主要由对象组成的,包括List等等。
Panda_熊猫 2014-12-06
  • 打赏
  • 举报
回复
传的是引用,修改了对象。理解的没问题。
code小生 2014-12-06
  • 打赏
  • 举报
回复
X(z);这里的z是实参,方法X中的h是形参,当参数传递的时候,也就是你所说的双方指向同一对象,对属性num的修改也就是传过来的z完成的。
xuhu_it 2014-12-06
  • 打赏
  • 举报
回复
_reason 2014-12-06
  • 打赏
  • 举报
回复
是的,顺便给楼主提个建议:类名首字母大写,方法名首字母小写
Cactus_hxk 2014-12-05
  • 打赏
  • 举报
回复
建议你看马士兵老师的视频,他对这些说的很清楚!
野树林 2014-12-05
  • 打赏
  • 举报
回复
是的

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧