java的值传递机制
java中方法的参数传递的方式只有一种:值传递,即将实际参数值的副本传入方法中,而参数本身不受影响
形参是基本数据类型,将实参基本数据类型变量的“数据值”传递给形参
形参是引用数据类型,将实参引用数据类型变量的“地址值”传递给形参
交换两个数的值
/*
java的值传递机制,交换两个数的值
*/
public class ValueTransferTest {
public static void main(String[] args) {
int m=10;
int n=20;
ValueTransferTest transferTest=new ValueTransferTest();
transferTest.swap(m,n);
System.out.println("m = "+m+", n= "+n);
}
public void swap(int m,int n){
int temp=m;
m=n;
n=temp;
}
}
这里使用基本数据类型,传递的是m和n的值的copy,而不是m和n本身,所以当方法执行完之后,方法的形参被销毁,而main方法里的m和n还是不变
交换两个数的值–传入引用
/**
* 交换两个数的值,引用传递
*/
public class ValueTransferTest2 {
public static void main(String[] args) {
int[] data=new int[]{
10,20};
ValueTransferTest2 valueTransferTest2=new ValueTransferTest2();
valueTransferTest2.swap(data);
System.out.println("m = "+data[0]+",n = "+data[1]);
}
public void swap(int[] data){
int temp=data[0];
data[0]=data[1];
data[1]=temp;
}
}
引用类型,传入的是对象的地址,那么形参和实参同时指向同一个对象。