方法含有的参数
形参:方法声明时的参数
实参:方法调用时实际传给形参的参数值
Java中的实参如何传入方法
通过值传递。即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响。
若形参为基本数据类型,此时赋值的是变量的数据值。
若形参为引用数据类型,此时赋值的是变量的地址值。
交换m和n的值并输出。
main(){
int m = 10;
int n = 20;
v.swap(m,n);
sysout(m,n); //①
}
swap(int m,int n){
int temp = m;
m = n;
n = temp;
sysout(m,n); //②
}
对于上述代码,swap方法确实能完成值的交换,对于第②个sysout方法的输出是能够得到交换后的结果,即m=20,n=10。但是在main方法中的sysout,即第①个,由于方法swap调用完成后就被释放(出栈),在main方法中输出m和n的值是没有被交换的,即m=10,n=20。
如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
交换对象的值。
class Data{
int m;
int n;
}
main(){
Data data = new Data();
data.m = 10;
data.n = 20;
v.swap(data);
}
swap(Data data){
int temp = data.m;
data.m = data.n;
data.n = temp;
}
将对象名data作为参数传递时,传递给形参的是地址,此时形参实参都指向同一片地址,因此在操作堆中数据时,改变的是同一组数据。
如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。