论坛
门户
内部优惠
喜欢
话题
VIP会员
搜索
新浪微博
登录
注册
100%
100%
首页
>
软件开发
>
java语言
>
Java的参数传递的唯一方式:传值(By Value)-JS...
回复
« 返回列表
111111
精灵王
注册日期
2010-12-08
发帖数
640
QQ
火币
1103枚
粉丝
120
关注
75
加关注
写私信
打招呼
阅读:
3206
回复:
0
Java的参数传递的唯一方式:传值(By Value)-JSP教程,Java技巧及代码
楼主
#
更多
只看楼主
倒序阅读
发布于:2010-12-15 13:20
保存
100%
100%
[]
1
之所以把这个问题拿出来重新分析一次,是因为我们操作
java
的对象(object)全是通过对象的引用(object references),引用能理解为指针,容易让人对应到c++的传址上面去。讨论讨论有百益而无一害嘛。
在传基本数据类型 变量时,直接传值不会让人费解;但当传递对象时,就应该理解为传递的是对象引用的值,但这个值并不是对象本身,而是指向该对象,即你让另一个引用指向了该对象。
--java以by value的方式传递object reference。
以下面简单程式为例:
package test;
public class blogtest
{
public void modifyaaa(int x, java.util.arraylist list)
{
x += 5;
system.out.println("x=====" + x);
list.add(new java.util.date());
system.out.println(list.size());
}
public static void main(string[] args)
{
blogtest blogtest = new blogtest();
int i = 5;
java.util.arraylist list = new java.util.arraylist();
system.out.println("i=======" + i);
system.out.println("list.size()==="+list.size());
blogtest.modifyaaa(i, list);
system.out.println("i==new==" + i);
system.out.println("list.size()====" + list.size());
}
}
/*
运行得到的结果是这样的
i=======5
list.size()===0
x=====10
1
i==new==5
list.size()==new==1
*/
这说明在参数传递过程中发生了以下事情:int 变量 i 被复制了一份给 int x,在modifyaaa()方法中改动了x的值并不会影响主函数中i的值,当然,这是变量生存区间不同,非常好理解。但发现list对象的引用传到modifyaaa()方法的前后,主函数中的list也跟着发生了变化。这正说了在传递对象引用时,形参得到了实参对象的引用拷贝,两个引用都指向了同一list对象,所以形参改动了list同时也能反映到实参中来。
喜欢
0
评分
0
最新喜欢:
回复
100%
发帖
回复
« 返回列表
普通帖
您需要登录后才可以回帖,
登录
或者
注册
100%
返回顶部
关闭
最新喜欢