引數傳值機制

樂燕發表於2020-12-14

Java中,方法中所有引數都是“值傳遞”,也就是“傳遞的的值是副本”,也就是說,我們得到的是“原引數的影印件,而不是原件”,因此,影印件改變不會影響原件。

基本資料型別引數的傳值

傳遞的是值得副本,副本不會影響原件

引用型別引數的傳值

傳遞的是值的副本。但是引用型別指的是“物件的地址”。因此,副本和原引數都指向了同一個“地址”,改變“副本指向地址物件的值,也意味著原引數指向物件的值也發生了改變”。

public class User4 {
    int id;//id
    String name;//名字
    String pwd;//密碼
    public User4(int id,String name){
        this.id = id;
        this.name = name;
    }
    public void testParameterTransfer01(User4 u){
        u.name = "高小八";
    }
    public void testParameterTransfer02(User4 u){
        u = new User4(200,"高小七");
    }
    public static void main(String[] args){
        User4 u1 = new User4(123,"高小七");
        u1.testParameterTransfer01(u1);
        System.out.println(u1.name);
        u1.testParameterTransfer02(u1);
        System.out.println(u1.name);
    }

}

 

相關文章