先定义一个String变量:
String a="test";
a中存储的是literal "test"的reference address,literal "test"本身是在string pool(stack-栈)里的。
再定义一个class:
Public void class1(String b){
b="test2";
}
当我们调用class1的时候:
class1(a);
local variable a会将其中存储的值(reference address-actual parameter)传送到formal parameter variable(形式变量)b当中。
而当我们执行 b="test2"; 时 "test2" 也会将存储的值(test2的reference address)传送到b当中。因此并不会改变a中的值。
定义一个int变量:
int a=0;
a中存储的是0这个数值本身。
再定义一个class:
Public void class2(int b){
b=1;
}
当我们调用class2的时候:
class2(a);
local variable a会将其中存储的值(0-actual parameter)传送到formal parameter variable(形式变量)b当中。
而当我们执行 b=0; 时 "test2" 也会将存储的值(1)传送到b当中。因此并不会改变a中的值。
定义一个array变量:
int[] a={1,2,3};
a中存储的是a[0]=1这个元素的位置,也就是array内第一个variable的reference address。
再定义一个class:
Public void class2(int[] b){
b[0]=4;
}
当我们调用class2的时候:
class2(a);
local variable a会将其中存储的值(reference address-actual parameter)传送到formal parameter variable(形式变量)b当中。
而当我们执行 b[0]=4; 时 "test2" 会按照地址将值(4)传送到array的第一个变量当中。因此a[0]也会变为4。