`
lovezl529
  • 浏览: 16674 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

参数传递(1)

阅读更多
值传递是在一个函数中,调用另外一个函数,其中含有参数传递的情况。往往值传递就是把数据传递到另外一个函数中进行进一步处理,以更清楚地显示函数的表达意思。在函数调用的时候会有数据传递,同样要考虑形参和实参的问题,如下面的一个程序:
 
<noembed>&lt;A HREF="http://ad.cn.doubleclick.net/click%3Bh=v8/3582/3/0/%2a/a%3B71907858%3B0-0%3B0%3B6694709%3B31-1/1%3B19822210/19840104/1%3B%3B%7Esscs%3D%3fhttp%3a%2f%2fwww.site.com" TARGET="_blank"&gt;&lt;IMG SRC="http://M1.cn.2mdn.net/123456/banner.gif" WIDTH="468" HEIGHT="60" BORDER="0"&gt;&lt;/A&gt;</noembed><noscript><A HREF="http://ad.cn.doubleclick.net/click%3Bh=v8/3582/3/0/%2a/a%3B71907858%3B0-0%3B0%3B6694709%3B31-1/1%3B19822210/19840104/1%3B%3B%7Esscs%3D%3fhttp%3a%2f%2fwww.site.com" TARGET="_blank"><IMG SRC="http://M1.cn.2mdn.net/123456/banner.gif" WIDTH="468" HEIGHT="60" BORDER="0"></A></noscript><noembed>&lt;A HREF="http://ad.cn.doubleclick.net/click%3Bh=v7/3443/3/0/%2a/i%3B39923244%3B0-0%3B0%3B6694709%3B31-1/1%3B17326613/17344508/1%3B%3B%7Esscs%3D%3fhttp%3a%2f%2fwww.site.com" TARGET="_blank"&gt;&lt;/A&gt;</noembed><noscript><A HREF="http://ad.cn.doubleclick.net/click%3Bh=v7/3443/3/0/%2a/i%3B39923244%3B0-0%3B0%3B6694709%3B31-1/1%3B17326613/17344508/1%3B%3B%7Esscs%3D%3fhttp%3a%2f%2fwww.site.com" TARGET="_blank"></A></noscript><noembed>&lt;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"&gt;&lt;/A&gt;</noembed><noscript><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"></A></noscript><noembed>&lt;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"&gt;&lt;/A&gt;</noembed><noscript><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"></A></noscript><noscript><A HREF="http://ad.cn.doubleclick.net/jump/messagingplus.zdnet.com.cn/developer/code;sz=1x1;ord=1364206921?"></A></noscript>

 

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的值,即使没有最后的数据返回,这个数据也是会改变的。

分享到:
评论

相关推荐

    mybatis 动态sql及参数传递

    参数传递 单个参数传递 多个参数传递 传入单个实体(JavaBean/Map) 传入多个实体 传入集合 使用场景 在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,...

    iyzyi#docker-learning#ansible参数传递1

    ansible-playbook向yml文件传递参数的方式同一个yml问价里面配置参数执行命令 ansible-playbook main.yml -i hos

    访问网站的参数传递代码

    在互联网应用中,参数传递是实现页面间数据交互的关键技术,尤其在动态网站和Web应用程序中更为重要。当用户在网站上浏览时,有时需要在不同的页面之间传递信息,如搜索查询、用户登录状态或者购物车的商品信息等。...

    kettle实现多参数传递并且循环加载数据.zip

    1. **Kettle参数传递**: 在Kettle中,参数可以用于传递动态或配置信息,例如数据库连接字符串、文件路径等。参数化作业或转换可以提高灵活性和重用性。通过菜单“文件”-&gt;“参数”,我们可以定义和管理参数。在...

    c# 调用C++编写 的DLL函数各种参数传递问题。

    C# 调用 C++ 编写的 DLL 函数各种参数传递问题 在 C# 调用 C++ 编写的 DLL 函数时,参数传递是一个非常重要的部分。这篇文章将详细介绍 C# 调用 C++ 编写的 DLL 函数各种参数传递问题,包括不返回值的参数、带...

    线程间通信方式2:参数传递方式

    本文将详细探讨“线程间通信方式2:参数传递方式”,并通过对不同创建线程方法的分析,展示如何有效地传递参数。 1. **线程创建方法** 在Windows API中,我们通常使用以下三种方法创建线程: - **CreateThread...

    Matlab GUI参数传递方式

    1. **输入参数传递**: - 子GUI的m文件的第一行应为`function varargout = subGUI(varargin)` - 在子GUI的OpeningFcn中读取参数并使用`guidata`保存。 ```matlab handles.in1 = varargin{1}; handles.in2 = ...

    12.参数传递之值传递.zip

    12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值传递.zip12.参数传递之值...

    两个网页之间参数传递例子

    在互联网应用中,网页间的参数传递是至关重要的,它使得用户在浏览不同页面时能够保持信息的连贯性。这个例子将深入探讨几种常见的网页间参数传递方法,以帮助你理解这一关键概念。 首先,我们有URL查询字符串。当...

    易语言多线程传递多参数

    总之,易语言多线程传递多参数是一项关键的编程技能,它涉及到线程的创建、管理和参数传递。理解并掌握这些知识,能够帮助开发者编写出更高效、更稳定的程序。对于易语言的学习者来说,研究这个源码将是一个宝贵的...

    c# 参数传递,参数调用

    在C#编程语言中,参数传递和参数调用是核心概念,它们关乎着函数和方法如何接收和处理数据。理解这些概念对于编写高效且可维护的代码至关重要。本篇文章将深入探讨C#中的参数传递机制及其应用。 首先,我们要了解...

    c++中参数传递方式讨论

    在C++编程语言中,参数传递是函数调用过程中一个至关重要的概念,它决定了函数如何接收外部传入的数据。根据给定的文件信息,我们将深入探讨C++中的三种主要参数传递方式:值传递、指针传递和引用传递,并分析它们的...

    13.java参数传递之引用传递.zip

    13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递.zip13.java参数传递之引用传递....

    C#控制台程序之间参数传递

    在C#编程中,控制台程序之间的参数传递是一项常见的任务,尤其在系统集成或脚本自动化等场景下。本文将详细讲解如何从一个控制台应用程序(源程序)启动另一个控制台应用程序(目标程序),并传递参数字符串,以及...

    C++指针参数传递内存详解

    C++指针参数传递内存详解 C++中的指针参数传递是一种常见的编程技术,但是许多开发者对其机理不甚了解,本文将深入剖析C++指针参数传递的内存机理,解决开发者们长期以来对函数指针参数传递的误解。 函数指针参数...

    HTML页面地址栏参数传递与获取

    通过URL参数传递数据是Web开发中常用的技术之一,它可以帮助开发者在不同页面间轻松共享数据。本文介绍了一个JavaScript函数用于从URL中获取参数,并提供了相应的代码示例。在实际应用中,应根据具体需求合理选择...

    易语言多线程传递文本参数两种方法

    2. **创建线程**:然后,在主线程中创建新的线程,并将参数传递给线程函数。使用 `创建线程` 命令,传入线程函数的入口地址和参数值,例如: ```易语言 创建线程, 线程函数入口, "要传递的文本" ``` 3. **线程...

Global site tag (gtag.js) - Google Analytics