注册
 找回密码
 注册
江西广告网
查看: 426|回复: 0
打印 上一主题 下一主题

java方法的传参问题

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-2-12 09:00:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
上java课的时候,老师讲java所有的参数都是pass by value,以前感觉很困惑,一直感觉对象是通过引用传递的。今天测试了一些才发现其中的奥秘。 java中如何交换两个值?对于基本类型: view plaincopy to clipboardprint? public static void swap(int args[]){ int temp=args[0]; args[0]=args[1]; args[1]=temp; } public static void swap(int args[]){ int temp=args[0]; args[0]=args[1]; args[1]=temp; }对于引用类型,一般也需要这种使用数组的方法。以前一直以为 swap(Object o1,Object o2)能够实现交换功能,测试过之后才知道这是自己一厢情愿的想法。在swap(Object o1,Object o2)中,o1和o2只是调用时外部对象引用值的拷贝,内部对它们的修改不会改变外部的实际值。但是如果调用了引用所指向的对象的方法的话,那确确实实是会执行的。做下面的测试验证一下: view plaincopy to clipboardprint? public class Test{ public static void modify(StringBuffer buffer){ buffer.append("world"); buffer=new StringBuffer("no effect!"); } public static void main(String args[]){ StringBuffer stringBuffer=new StringBuffer("hello "); System.out.println(stringBuffer); modify(stringBuffer); System.out.println(stringBuffer); } }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表