Java值传递与引用传递

个人理解,不足之处请各位大佬多多指教

值传递:复制参数值并传递:

public class Hello {
    public static void main(String[] args) {
        Hello hello = new Hello();
        // 基本数据类型
        int i = 10;
        hello.pass(i);
        System.out.println("i1 = " + i);
    }
    public void pass(int i) {// 这里相当于int pas;pas=10;这里接收的值为10,而不是i
        i = 20;
        System.out.println("i2 = " + i);
    }
}

输出:

i2 = 20
i1 = 10

引用传递:传引用参数的地址:

public class Hello {
    public static void main(String[] args) {
        Hello hello = new Hello();
        // 对象
        User user = new User(); //假设这里栈中存储的user地址为0x1122
        user.setName("wang");    //
        hello.pass(user);
        System.out.println("main:"+user.getName());
    }
    public void pass(User user) {// 这里传的是0x1122这个地址值
        user.setName("java");
        System.out.println("The name is :" + user.getName());
    }
}

输出:

The name is :java
main:java

参考:https://blog.csdn.net/SummerOfFoam/article/details/109570841

posted @ 2022-09-02 14:08  提酒喝果啤  阅读(23)  评论(0)    收藏  举报