学习Java值传递方法
学习Java值传递方法-武汉北大青鸟
值传递是在一个函数中,调用另外一个函数,其中含有参数传递的情况。往往值传递就是把数据传递到另外一个函数中进行进一步处理,以更清楚地显示函数的表达意思。在函数调用的时候会有数据传递,同样要考虑形参和实参的问题,如下面的一个程序:
on error resume next ShockMode = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.5")))
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的值,即使没有最后的数据返回,这个数据也是会改变的。
相关文档:
Observer
Intent
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
How to
Subject
knows its observers. Any number of Observer objects may observe a subject.
provides an in ......
大家知道,在1991年,几乎与Linux同时,SUN发布了Java编程语言。不久,我的大学同学(比我低两年)王克宏教授(清华博士导师)与SUN合作成立了中国最早的“Java研究中心”,并且担任该中心主任。从此,我开始注意Java技术的发展动态。我家中的存书,以Java书籍最多(当然,除了数学书籍 ......
上次談過了使用iText產生PDF檔,這次換成來談談使用JExcel來產生EXCEL檔的方法。
首先,先到他的SourceForge主頁面download相關的API檔案。
http://sourceforge.net/projects/jexcelapi/
或
http://www.andykhan ......
参考:
http://danadler.com/jacob/
http://jakarta.apache.org/poi/
http://www.onjava.com/pub/a/onjava/2003/01/22/poi.html
http://www.csdn.net/develop/article/15/15311.shtm
http://forum.java.sun.com/thread.jsp?forum=40&thread=382666&tstart=0&trange=15
Java Excel ......