java方法参数_Java-方法参数

方法参数传递的两种方式:

- 按值调用:表示方法接收调用者提供的值

- 按引用调用:表示方法接收调用者提供的变量地址

首先声明:**Java程序设计语言总是采用按值调用**,即方法得到的是所有参数值的拷贝。

所以如下程序代码不会修改变量a的值

```java

int a = 3;

xxx.add(a); // 假设add方法内存在a=a+1这样的代码

// 输出a,结果还是3

```

[![](https://www.kdphoto.cn/pic/a465936fcf257c6df45df523f1069206)](https://www.kdphoto.cn/pic/a465936fcf257c6df45df523f1069206?p=0)

以上是基本类型的情况。如果使用对象引用,则会不同

[![](https://www.kdphoto.cn/pic/86a619dfba16cc8a0ee5f7fdcbbd098b)](https://www.kdphoto.cn/pic/86a619dfba16cc8a0ee5f7fdcbbd098b?p=0)

[![](https://www.kdphoto.cn/pic/a3e4b0d29ebc55fac5b31bd13210ace9)](https://www.kdphoto.cn/pic/a3e4b0d29ebc55fac5b31bd13210ace9?p=0)

因此,Java中方法参数是一个值拷贝,对于基本类型,在方法内修改参数,方法外是不可见的(他们是两个不同的变量)。对于对象引用作为参数,方法得到的是对象引用的拷贝,他们指向的是相同的地址,所以修改对象的状态时,方法外部可以观测到。

用一个反例证明Java不是按引用调用

```java

public static void swap(Employee a,Employee b){

Employee temp = a;

a=b;

b=temp;

}

```

当测试该方法后,能够发现Employee并没有被交换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值