【Java基础】方法参数的值传递机制

1.参数为基本数据类型

public class ValuePassing {
    public static void main(String[] args) {
        int m = 10;
        int n = 20;

        ValuePassing v = new ValuePassing();
        v.swap(m,n);
        System.out.println(m+" , "+n);  //10 , 20

    }

    public void swap(int m,int n){
        int temp = m;
        m = n;
        n = temp;
        System.out.println(m+", "+n);   //20, 10
    }
}

图示
image

2.参数为引用数据类型

public class ValuePassing {
    public static void main(String[] args) {

        ValuePassing v = new ValuePassing();

        Data data = new Data();
        System.out.println(data);   //1b6d3586

        data.m = 10;
        data.n = 20;
        v.swap(data);
        System.out.println(data.m+"  "+data.n);//20 10

    }

    public void swap(Data data){
        System.out.println(data);  //1b6d3586

        int temp = data.m;
        data.m = data.n;
        data.n = temp;
    }
}

class Data{
    int m;
    int n;
}

(1)执行以下语句时

Data data = new Data();
data.m = 10;
data.n = 20;

image

(2)调用方法后v.swap(data);
image

3.值传递规则

规则:

  • 如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。
  • 如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值

推广:
如果变量是基本数据类型,此时赋值的是变量所保存的数据值。
如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值

posted @ 2022-09-02 14:42  植树chen  阅读(32)  评论(0编辑  收藏  举报