Java是值传递(pass-by-value)还是引用传递(pass-by-reference)?

The parameter passing mechanism in Java is pass-by-value

example:

public class Test {
    public static void main(String[] args) {
        testa a = new testa();
        a.a=1;
        testa b = new testa();
        b.a = 13;
        a.next = b;
        fool(a);
        System.out.println(a.a);
        System.out.println(a.next);
    }
    static void fool(testa a){
        a.a = 10;
        a.next = null;
    }
}

class testa {
    int a;
    testa next;
}

输出:

10
null

public class Test {
    public static void main(String[] args) {
        testa a = new testa();
        a.a=1;
        testa b = new testa();
        b.a = 13;
        change(a,b);
        System.out.println(a.a);
        System.out.println(b.a);

    }
   
    static void change(testa a, testa b){
        testa tmp = a;
        a.a = 12;
        b.a = tmp.a;
    }
}

class testa {
    int a;
    testa next;
}

输出:

12

12

public class Test {
    public static void main(String[] args) {
        testa a = new testa();
        a.a=1;
        testa b = new testa();
        b.a = 13;
        change(a,b);
        System.out.println(a.a);
        System.out.println(b.a);

    }
    static void change(testa a, testa b){
        testa tmp = a;
        a.a = b.a;
        b.a = tmp.a;
    }
}

class testa {
    int a;
    testa next;
}

输出:

13

13 

public class Test {
    public static void main(String[] args) {
        testa a = new testa();
        a.a=1;
        testa b = new testa();
        b.a = 13;
        change(a,b);
        System.out.println(a.a);
        System.out.println(b.a);

    }
    static void change(testa a, testa b){
        testa tmp = a;
        a = b;
        b = tmp;
    }
}

class testa {
    int a;
    testa next;
}

输出:

1

13

posted @ 2022-10-17 08:47  月窀  阅读(22)  评论(0编辑  收藏  举报