【参考《Java》程序设计教程 (第二版)by 林巧民】
在Java中,可以把任何具有有效数据类型的参数传递到方法中,这些类型必须预先定义好。
另外,参数的类型既可以是简单数据类型,也可以是引用数据类型(数组类型,类或接口类型)。
对于简单数据类型,Java实现的是值传递,方法接收的是参数的值,在方法内部并不能改变这些参数的值。
如果要在方法体内改变参数的值,就要用到引用数据类型,因为引用数据类型传递给方法的是数据在内存中的地址,方法中对数据的操作可以改变相应变量的值。
package Test;
class PassTest{
public int value;
public void changeValue(int value) {
value=this.value;
}
public void changeValueByRef(PassTest ref) {
ref.value=999;
}
}
public class Test {
public static void main(String[] args) {
PassTest pt=new PassTest();
//简单数据类型
int value=20;
pt.value=10;
System.out.println("Original Int Value in PassTest is:"+pt.value);
pt.changeValue(value);
System.out.println("Int Value after change is still:"+value);
//引用数据类型
pt.value=1000;
System.out.println("Original ptValue in PassTest is:"+pt.value);
pt.changeValueByRef(pt);;
System.out.println("ptValue after change is still:"+pt.value);
}
}
changeValue()方法内对value的修改不影响方法外原来value的值;
changeValueByRef()方法中对引用参数所指的对象的成员变量进行修改,则是对改对象所占实际内存空间的修改,经过改方法作用后,pt.valued 的值发生了真实的变化。