5.2.2 方法的参数传递机制

Java里方法的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数值的副本(复制品)传入方法内,而参数本身不会受到任何影响。

public class PrimitiveTransferTest {
    public  void swap(int a,int b)
    {
        int temp=a;
        a=b;
        b=temp;
        System.out.println("swap方法里,a的值是"+a+";b的值是"+b);
    }
    public static void main(String[] args)
    {
        int a=6;
        int b=9;
        //swap(a, b);
        new PrimitiveTransferTest().swap(a, b);
        System.out.println("交换结束后,a的值是"+a+";b的值是"+b);
    }

}

运行结果:

swap方法里,a的值是9;b的值是6
交换结束后,a的值是6;b的值是9

程序改变的只是swap()方法栈区的a、b。这就是值传递的实质,当系统开始执行方法时,系统为形参执行初始化,就是把实参变量的值赋给方法的形参变量,方法里操作的并不是实际的实参变量。



class DataWrap
{
    int a;
    int b;
}
public class ReferenceTransterTest {
    public static void swap(DataWrap dw)
    {
        int temp=dw.a;
        dw.a=dw.b;
        dw.b=temp;
        System.out.println("swap方法里,a成员变量的值"+dw.a+";b成员变量的值是"+dw.b);
    }
    public static void main(String[] args)
    {
        DataWrap dw=new DataWrap();
        dw.a=6;
        dw.b=9;
        swap(dw);
        System.out.println("交换结束后,a成员变量的值"+dw.a+";b成员变量的值是"+dw.b);
    }


}

运行结果

swap方法里,a成员变量的值9;b成员变量的值是6
交换结束后,a成员变量的值9;b成员变量的值是6

main()方法开始创建了DataWrap对象,并定义了一个dw引用变量来指向DataWrap对象,这是一个与基本类型不同的地方。
main()方法中的dw是一个引用,也就是一个指针,它保存了DataWrap对象的地址值,当把dw的值赋给swap()方法的形参后,即让swap()方法的dw形参页保存这个地址值,即也会引用到堆内存中的DataWrap对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值