Java中的参数分为
实参:方法调用时实际传给形参的参数值
形参 :方法声明时的参数
而Java里方法的参数传递方式只有一种:值传递。即将实际参数值的副本(复制品)传入方法内,而参数本身不首影响。
下面的例子是想要交换两个数的值,为了方便起见把交换过程,封装到一个方法里面,然而得到的结果却不是我们想要的,这个问题就是上面是介绍的当形参是基本数据类型时,参数本身不受影响。
public class Swap {
public static void main(String[] args) {
int a=10;
int b=20;
Swap s=new Swap();
s.swap1(a,b);
System.out.println("a="+a+"b="+b);
}
public void swap1(int a,int b){
int t=a;
a=b;
b=t;
}
}
要想解决上面是的问题,就必须换成引用数据类型,当形参是引用数据类型时,传递的是地址值,也就是他们都指向同一个地址。
public class Swap {
public static void main(String[] args) {
Data data=new Data();
data.a=10;
data.b=20;
Swap s=new Swap();
s.swap1(data);
System.out.println("a="+data.a+"b="+data.b);
}
public void swap1(Data data){
int t=data.a;
data.a=data.b;
data.b=t;
}
}
class Data{
int a;
int b;
}