<%@ page contentType="text/html; charset=gb2312"%> Java学习之值传递
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
Java学习之值传递
     发布者: 发布时间:2006-09-07
值传递是在一个函数中,调用另外一个函数,其中含有参数传递的情况。往往值传递就是把数据传递到另外一个函数中进行进一步处理,以更清楚地显示函数的表达意思。在函数调用的时候会有数据传递,同样要考虑形参和实参的问题,如下面的一个程序:
<A TARGET="_top" HREF="http://ad.cn.doubleclick.net/click%3Bh=v7/3459/3/0/%2a/n%3B45103473%3B0-0%3B0%3B13895291%3B4307-300/250%3B18067261/18085156/1%3B%3B%7Efdr%3D45803315%3B0-0%3B0%3B6694709%3B31-1/1%3B18135183/18153078/1%3B%3B%7Esscs%3D%3fhttp://scn.semiconductors.philips.com/"><IMG SRC="http://m.cn.2mdn.net/1280511/nxp300x250-simchin2.gif" BORDER=0></A> <a href="http://ad.doubleclick.net/click%3Bh=v5|33d0|3|0|%2a|r%3B29568033%3B0-0%3B0%3B6694709%3B31-1|1%3B15525937|15543833|1%3B%3B%7Esscs%3D%3fhttp%3a%2f%2fwww.site.com" target="_blank"><IMG SRC="http://m.2mdn.net/123456/banner.gif" WIDTH=468 HEIGHT=60 BORDER=0 ></a> <a href="http://ad.cn.doubleclick.net/click%3Bh=v5|33d0|3|0|%2a|r%3B29568033%3B0-0%3B0%3B6694709%3B31-1|1%3B15525937|15543833|1%3B%3B%7Esscs%3D%3fhttp%3a%2f%2fwww.site.com" target="_blank"><IMG SRC="http://java.chinaitlab.com/UploadFiles_8734/200604/20060423103520409.gif" WIDTH=468 HEIGHT=60 BORDER=0 ></a>

public class PassTest

{

    float ptValue;

     public void changeInt (int value)

    {

           value = 55;

    }

     public void changeStr (String value)

    {

           value = new String ("different");

    }

    public void changeObjValue (PassTest ref)

    {

           ref.ptValue = 99f;

    }

    public static void main (String args[])

    {

           String str;

           intval;

           PassTest pt = new PassTest ();

           val = 11;

           pt.changeInt (val);

           System.out.println ("Int value is: " + val);

           str = new String ("Hello");

           pt.changeStr (str);

           System.out.println ("Str value is: " + str);

           pt.ptValue = 101f;

           pt.changeObjValue (pt);

           System.out.println ("Current ptValue is: " + pt.ptValue);

     }

}

  这个程序最后输出的结果将是:

  11

  Hello

  99f

  开始的11和Hello就是遵循参数传递的原则,虽然改变了形参的值,但是实参却不改变,这同C语言中是一样的。那么如果想改变函数中的实参的值,那么应该怎么做呢?我们知道,在C语言中,我们可以采用指针变量,用指针变量作为函数的参数,那么这样,传递的就是参数存放的地址,那么在函数中改变同一地址的参数值的时候,就不会发生错误,可是,在java中没有指针的说法,那么,要实现上述C语言的做法,应该怎么处理呢?我们知道,java中处处都是考虑对象的,句柄是用来操作对象的活动的,那么我们如果将对象的句柄传递到函数中去,就可以使两者指向同一个句柄(也就是地址),这样就可以完成数据的修改了。见上面的程序,我们可以知道,pt是主函数中创建的PassTest的对象,通过传递它,就可以完成地址的传递,子函数中,ref与主函数的pt指向的其实是一个内存单元,那么修改ref中的ptValue的值,也就是修改pt中的ptValue的值,即使没有最后的数据返回,这个数据也是会改变的。

(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
XML在分布式系统中的作用
领域模型驱动设计(DDD)之模型提炼
Java虚拟机(JVM)的动态类加载
Tomcat集群与负载均衡
JBuilderX+SQL Server开发hibernate
Java开源项目Hibernate包作用详解
 
最近评论:
        
冰封的往事!
wow power leveling,wow gold,wow power leveling,wow gold max(6482)
        
冰封的往事!
wow power leveling,wow gold,WoW Gold,wow gold max(6317)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(9175)
        
飞舞的传奇!
传世私服,传世私服.传奇世界私服传奇世界私服,传世私服传世私服, 传奇世界私服传奇世界私服.传奇私服传奇私服. max(382)
        
回复:Java学习之值传递
javascript与javabean间的值传递怎么实现?
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号