【Java】引用传递

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class tryRf{
    void hehda(int he, List da, List 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 al = new ArrayList<>();
        al.add("123");
        List 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).

你可能感兴趣的