• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

Java中向方法传参数只有传值一种!

发布: 2007-7-01 18:47 | 作者: admin | 来源: | 查看: 17次 | 进入软件测试论坛讨论

领测软件测试网 本文是个总结,欢迎讨论!

在Java中,参数的传递严格意义上讲都是传值的,只不过简单很容易分清楚。而对于对象,有些复杂。

首先,在Java中是先声明一个类的变量。然后,用类生成一个类的实例,也就是在内存中的类的实例区域,最后把这个区域的指针赋给类的这个变量。注意,变量中存的是指向对象的指针。

若是按传址传参数,是要改变这个对象变量所指的内存对象区域,也就是要在方法内把新对象赋给方法外的对象变量。但是,这在Java中办不到。因为Java是把对象变量中的对象指针传入方法,并没有把变量本身的地址传入方法;在方法中,会生成新变量接受这个对象的指针。所以,在Java方法中,可以改变当前对象中的内容,却不能改变方法外边变量的值,即所指向的对象。对于传值、传址的分析就是为了在应用中少犯错误。其他是次要的。

《此位置本有图片,因不能上传,故删除》

0: public class DemoTest {
1: public String x;
2: public void setX(String x){
3: this.x=x;
4: }
5: public void test(DemoTest ok){
6: ok=new DemoTest(); this.x="333";
7: }
8: public String getX(){
9: return this.x;
10: }
11: public static void main(String[] args) {
12: DemoTest ob = new DemoTest();
13: DemoTest obp = new DemoTest();
14: ob.setX("111");
15: System.out.println("ob.X"+ob.getX());
16: obp.test(ob);
17: System.out.println("ob.X"+ob.getX());
18: ob.test(ob);
19: System.out.println("ob.X"+ob.getX());
20: }
21: }

对于上面的程序,要分清楚对象变量和对象实体。

注意在上面的方法调用是一个可能引出错误的调用,不能说明传值和传址的区别。

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网