0
点赞
收藏
分享

微信扫一扫

【Java值传递机制】

猫er聆听没落的旋律 2022-04-29 阅读 43
java

ps:值传递机制是面向对象上的重点和难点,这篇文章的将会对值传递机制做一个说明

文章目录

形参:方法定义时的参数;
实参:方法调用时实际传给形参的参数值。
值传递机制:
形参是基本数据类型,实参赋给形参变量的是实参真实存储的“数据值”;

看例子

public class ValuePassed {
    public static void main(String[] args) {
        int m = 10;
        int n = 20;
        swap(m,n);//调用方法,交换m和n的值
        System.out.println("m="+m+",n="+n);//m=10,n=20
    }
    public static void swap(int m ,int n){
        int temp = m;
        m = n;
        n = temp;
    }
}

说明:在main()里声明了m,n,在swap()里定义了两个同名形参m’和n’;将属性m,n传递给形参m’,n’,关键处就是这里,swap(m’,n’),是将m和n的值拷贝一份给形参m’,n’,不论形参如何改变不会影响到其原本的属性m和n;当swap(m’,n’)运行结束后,整个被回收机制处理,因此最终输出的结果是:m=10;n=20。
内存解析:
在这里插入图片描述

形参是引用数据类型,实参赋给形参变量的是实参存储的“地址值”。

class Value_propagation {

    public static void main(String[] args) {
        Data data=new Data();
        data.m=10;
        data.n=20;
        Value_propagation test=new Value_propagation();
        test.swap(data);
        System.out.println("m="+data.m+",n="+data.n);//m=20,n=10;
    }

    public void swap(Data data) {
        int temp=data.m;
        data.m=data.n;
        data.n=temp;
    }
}

class Data{
    int m;
    int n;
}

说明:此时的swap(data)方法里,是将一个对象作为了一个实参赋给形参data’,而对象又存储的是地址值,因此方法main()和方法swap(data)指向了同一块内存空间,在swap(data)里进行操作就相当于在main()里面进行操作;即使swap(data)在运行结束后,被回收处理掉了,main()里的m和n的值同样被互换了。
内存解析:
在这里插入图片描述

举报

相关推荐

0 条评论