网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  入门基础 java参数传递方式     
  文章作者:未知  文章来源:水木森林  
  查看:70次  录入:管理员--2007-11-17  
 

    其实这个问题我原来翻译(破除java神话之二:参数是传址的 )、转帖别人的详细解释(java 应用程序中的按值传递语义 )和专门解释( 我对《java 应用程序中的按值传递语义》的理解 )过,不过现在看来,原来翻译或者解释的角度是有问题的,从底层的角度解释并不直观,在交流的时候也容易引起误解,最终不能达成一致意见。下面以最终的效果来解释参数的传递方式:

1、对于原始数据类型,也就是int、 long、char之类的类型,是传值的,如果你在方法中修改了值,方法调用结束后,那个变量的值没用改变。
2、对于对象类型,也就是object的子类,如果你在方法中修改了它的成员的值,那个修改是生效的,方法调用结束后,它的成员是新的值,但是如果你把它指向一个其它的对象,方法调用结束后,原来对它的引用并没用指向新的对象。
代码如下:
public class tester {
    public static void main(string[] args) {
        int primitive = 2;
        changeprimitive(primitive);
        //primitive的值依然是2
        myclass myclass = new myclass();
        changeobject(myclass);
        //myclass仍然指向的是执行changeobject之前的那个对象
        //但是myclass.i等于3了
    }

    public static void changeprimitive(int primitive) {
        primitive = 3;
    }

    public static void changeobject(myclass myclass) {
        myclass.i = 3;
        myclass = new myclass();
    }
}

class myclass {
    int i;
}

    对于远程调用,无论是什么类型,调用结束后,传入的参数和以前没用任何变化(当然前途是直接调用远程方法,如果中间经过其它的proxy类或者facade类,不能保证那些类对对象没用修改)。至于是通过local接口进行调用的,也应该属于本地调用,和上面说的情况应该是一致的。

 
 
上一篇: java类的完整构造执行顺序    下一篇: 管理 java 类路径(unix 和 mac os x)
  相关文档
关于ojb和hibernate框架的评议 11-17
用java实现http断点续传 11-16
hsqldb+eclipse3+swt开发界面(组图) 11-17
不使用泛型如何保证程序的可读性 11-17
基础:j2ee程序员应该掌握的linux知识 12-10
java中应用filter对权限和session控制 11-16
在java中使用正则表达式 11-16
在eclipse 3.1体验j2se 5.0新特性四(图) 11-17
软件操作界面设计须遵循的一些原则 11-17
rmi规范--第十章 11-17
java服务器端编程安全必读 11-16
j2me学习--了解midlet的生命周期(图) 11-17
利用java实现串口全双工通讯 (转载) 11-17
8条用于分布式计算的架构技巧 11-17
计算java日期:学习怎样创建和使用日期 12-14
hibernate杂记 11-17
jsp/servlet:servlet/jsp会话跟踪机制 01-11
java笔记 11-17
java i/o api之性能分析 (下) 11-16
java进阶学习:jar打包详解 11-16
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息