java方法参数传递问题


本文属本人原创,如要转载,请指明出处(http://blog.csdn.net/rypgood),本人保留法律权力。


java方法参数问题是一个热门话题,在各类考试如scjp,国家等级考试,各种笔试题等都是必考内容。在

网上也有很多讨论这个问题的文章和视频,但是笔者都觉得说的不好,把简单的问题无限复杂化了。他们

总在传值还是传地址的问题上或者基本类型与引用类型的问题上纠缠不清。笔者不才,也说说参数的传递问题。
这里只说单个参数的问题,多个参数的类推,不用讨论。
假如有一个方法如下:

public void test(MyClass var)
{
 //这里包含对var处理的语句。
}
只要稍微改动一下,你就会很容易地明白参数是怎么传递怎么操作的了:
public void test(MyClass var)
{
 MyClass var2=var;
 //把对var处理的语句都改成var2
}
这样改动后,两个方法的效果是一样的。
其实,java虚拟机在处理方法参数的时候,也就是这样处理的:
在方法体内局部创建一个指向参数所指向的对象的引用,然后直接操作这个引用。
所以,你想,假如在方法体里面存在如
var=new Myclass();
的语句,就相当于第二个方法中的
var2=new MyClass();
这个语句,这样的操作对var当然没有影响了。
但是若是第一个方法中存在
var.xxx();
语句(var.xxx()是MyClass定义的方法),即使改成第二个方法,变成
var2.xxx();
还是会对var造成影响。
所以,在这里我们不讨论传值还是传地址的问题,也不讨论基本类型还是引用类型的问题,如果你碰到方

法参数传递问题,只要把它改成第二个方法的样式来处理,绝对不会错。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值