网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  关于参数传递     
  文章作者:未知  文章来源:水木森林  
  查看:108次  录入:管理员--2007-11-17  
 
  现在网上对java和c++的参数传递机制争论不休,我个人觉得是陷入了概念理解的陷阱。实际上这两者的参数传递机制是完全一样的,只不过java在语言书写这方面做了简化,让程序员看不到指针,以加快开发速度。另外,关于参数类型是基本类型还是复杂类型,他们的传递机制也是一样的。其中传递的都是一个整数值。我们从内存块这一角度来分析的话,或许就能够发现其中奥秘。
c例子如下:
#include <iostream.h>
void exch(int *p1,int *p2);

int main()
{
int i =1,j=2;
cout<<"i="<<i<<",j="<<j<<endl;
exch(&i,&j);
cout<<"i="<<i<<",j<"<<j<<endl;
return 0;
}

void exch(int *p1,int *p2)
{
int* temp;
temp = p1;
p1 = p2;
p2 = temp;
}
结果为:
i=1,j=2
i=1,j=2

这一程序执行过程中内存变化如下:

执行exch之前内存分布如第一章图所示,这时候打印,结果应该是存储在0018和0019单元的1和2。
进入exch方法之后内存分布如第二张图所示,执行完毕exch方法之后内存分布如第三张图所示。这时候打印i和j当然依旧是存储在0018和0019单元的1和2。
在java中的情形也是一样的。可以将传入exch方法的参数看成是变量i和j的地址,也就是这里的p1和p2是c++里*p1和*p2的简写。如果参数类型不是基本类型,而是引用类型,使用内存分布分析方法也能够得到正确结果(使用引用类型作为例子也许更加容易理解)。在java中需要注意的是string类,该类实例是不可变的,也就是每次对其做修改都会创建新的string对象,而旧的对象没有改变。
public class test{
public static void main(string[] agrs){
test t = new test();
int i = 1;
int j = 2;
system.out.println(i);
system.out.println(j);
t.exch(i, j);
system.out.println(i);
system.out.println(j);
}

public void exch(int p1, int p2){
int temp = 0;
temp = p1;
p1 = p2;
p2 = temp;
}
}
结果为:
1
2
1
2
 
 
上一篇: 关于rose的对话    下一篇: 成为gui的最好的朋友并揭开liar view的面纱
  相关文档
高级:cookie,httpsession类使用概述 01-14
如何使用jstl标签做页面资源国际化 11-17
程序员必读--关于java占用内存的研究 11-26
用 eclipse 插件提高代码质量 11-17
java入门--漫谈java程序的性能优化 03-14
jar进阶 11-17
一个理解wait()与notify()的例子 11-16
移动视频: quicktime for java api 入门 11-17
jbuilder 使用中的常见问题归纳整理 11-17
用solstice enterprise manager建立java网络管理应用程序 11-17
提高java应用程序属性持久化的方法 11-17
如何提高软件的可测试性 11-17
java深入分析之:使用factorymethod模式 11-17
技巧:在java的应用过程中获取系统属性 11-16
在applet中使用jdbc的一点总结 11-17
运用bitset类来处理一系列选项 11-17
resin的使用和安装(1) 11-17
java实现windows中的dir/s查找实例 11-20
使用jfreereport生成报表 11-17
发扬ejb,spring思想将组件化进行到底 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息