java中方法的参数传递机制

在java中我们经常会传递一些值当作参数到方法中,因此我们了解java中方法的参数传递机制是很有必要的,以免发生意想不到的错误。

在java中传递的都是的值的副本,而参数值又分为两种:
(1)基本数据类型
如果方法中的参数是基本数据类型,当在方法内更改该参数的值,并不会影响原始的参数值。
(2)引用类型
如果方法中的参数是引用类型,当在方法内更改该引用类型里面的属性值,会影响原始引用类型参数的属性值;这是因为参数传递的是该引用类型的地址的副本,他们都是指向同一块内存地址,因此对同一块内存地址进行修改,肯定会变动。

总的来说,当传入的参数是一个基本数据类型,是不会影响原始的参数值;当传入的参数是一个引用类型(传递该引用的地址副本,相当于浅拷贝),改变该引用类型的属性值(即修改该地址的内容),会对该引用类型的内容有影响,除非在方法内重新new一个新的对象(),再修改该地址的内容,则不会影响原始引用类型的内容(相当于深拷贝)

下面我们通过一个简单的例子来说明

/**
 * @author
 * @PackageName:PACKAGE_NAME
 * @ClassName:Param
 * @Description:
 * @date 2021-8-10 19:02
 */
public class Param {
    private Integer num;

    public void changParam(int num,Param param){
        num++;
        param.setNum(param.getNum()+1);
    }

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }

    public static void main(String[] args) {
        Param param = new Param();
        param.setNum(3);
        int num = 10;
        System.out.println("============修改前的值============");
        System.out.println(String.format("num: %d , param.num: %d",num,param.getNum()));

        //修改值
        param.changParam(num,param);

        System.out.println("============修改后的值============");
        System.out.println(String.format("num: %d , param.num: %d",num,param.getNum()));
    }

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值