方法的传值机制
一
复习:
变量赋值操作:
-
1.针对于基本数据类型的变量:将基本数据类型的变量保存的真实的数据值赋给另外的变量。
-
2.针对于引用数据类型的变量:将引用数据类型的变量a赋值给引用数据类型的变量b,实际上是将变量a保存的地址值赋给变量b
public class ValueTransferTest { public static void main(String[] args) { //基本数据类型的情况 int n1 = 10; int n2 = n1; System.out.println("n1 = " + n1 + ",n2 = " + n2); n1 = 20; System.out.println("n1 = " + n1 + ",n2 = " + n2); //引用数据类型的情况 //情况1 int[] arr1 = new int[]{1,2,3}; int[] arr2 = arr1; System.out.println(Arrays.toString(arr1)); arr2[0] = 10; System.out.println(Arrays.toString(arr1)); //情况2 User u1 = new User(); u1.name = "Tom"; u1.id = 1001; User u2 = u1; u2.id = 1002; System.out.println("u1的id:" + u1.id);//1002 } } class User{ int id; String name; }
二
方法的形参的传递机制:值传递机制。
- 形参:方法在声明时,一对()内声明的变量
实参:在方法调用时,实际传递给形参的值。
2.形参是基本数据类型:传递的是基本数据类型变量保存的数据值。
形参是引用数据类型:传递的是引用数据类型变量保存的对象(或数组)的地址值
使用到的判别工具:
① 成员变量:存放到堆空间
局部变量:声明在栈空间
② 基本数据类型变量:保存的就是其数据值
引用数据类型变量:保存的就是对象的地址值
public class ValueTransferTest1 {
public static void main(String[] args) {
int m = 10;
int n = 20;
System.out.println("m = " + m + ", n = " + n);
// 交换两个变量的值
// int temp = m;
// m = n;
// n = temp;
ValueTransferTest1 test = new ValueTransferTest1();
test.swap(m, n);
System.out.println("m = " + m + ", n = " + n);
}
public void swap(int m,int n){
int temp = m;
m = n;
n = temp;
}
}
三
public class ValueTransferTest2 {
public static void main(String[] args) {
Data data = new Data();
System.out.println("m = " + data.m + ", n = " + data.n);
//交换对象的两个属性值
// int temp = data.m;
// data.m = data.n;
// data.n = temp;
ValueTransferTest2 test = new ValueTransferTest2();
test.swap(data);
System.out.println("m = " + data.m + ", n = " + data.n);
}
public void swap(Data data){
int temp = data.m;
data.m = data.n;
data.n = temp;
}
}
class Data{
int m = 10;
int n = 20;
}