import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class tryRf{
void hehda(int he, List<String> da, List<String> ha) {
he = 5;
da.add("heheda");
ha = Arrays.asList("he", "he", "da");
}
}
public class JavaReferencePass {
public static void main(String[] args) {
System.out.println("======== 引用传递 ==========");
tryRf tf = new tryRf();
int a = 3;
List<String> al = new ArrayList<>();
al.add("123");
List<String> ak = new ArrayList<>();
ak.add("135");
tf.hehda(a, al, ak);
System.out.println(a); // 3
System.out.println(al); // [123, heheda]
System.out.println(ak); // [135]
tf.hehda(a, al, al);
System.out.println(a); // 3
System.out.println(al); // [123, heheda, heheda]
System.out.println(ak); // [135]
}
}
简而言之,基础类型不会被函数改变;ArrayList
等 是传引用进函数,会发生变化(如al
),但是函数体不会覆盖ArrayList
(如ak
).
网友评论