Java中的方法参数如何接收调用者的值

本文详细解析了Java中的方法参数传递方式,包括按值调用的基本数据类型行为、引用类型的交换技巧,以及如何通过持有者类型和对象实例修改参数状态。重点介绍了如何在不改变基本类型值的情况下处理引用类型参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前言

在程序语言中,方法参数中接收调用者的值的方式一共有三种,即按值调用:表示方法接收的是调用者提供的值;按引用调用:表示接收方法接收的是调用者提供的地址;按名调用(过时)。

2.方法参数是如何接收调用者的值

1.对于基本数据类型

假定一个方法试图将一个参数增加至3倍:
在这里插入图片描述

不过这样并不能起到作用,调用这个方法之后i的值还是3,即一个方法不能修改基本数据类型。

2.对于引用类型

编写一个方法交换两个Employee对象的方法

public static void swap(Employee x,Employee y)
{
	Employee temp = x;
	x = y;
	y= temp;
}

Employee a = new Employee();
Employee b = new Employee();
swap(a,b);

不过这样并没有改变存储在变量a,b中的对象引用。swap方法的参数x和y被初始化为两个对象引用的副本,这个方法交换的是这两个副本。

综上所述:Java程序设计语言总是采用按值调用,方法得到的是所有参数值的一个副本。

3.如何修改方法参数的状态

1.对于基本数据类型

如果想编写一个修改数值参数值的方法,可以使用org.omg.CORBA包中定义的某个持有者类型,包括IntHolder,BooleanHolder等,每个持有者类型都包含一个公共字段value,通过它可以访问存储在其中的值。

public static void update(IntHolder i){//修改了值
        i.value *= 3;
    }

2.对于引用类型

public static void updateSalary(Employee x)
{
	x.raiseSalary(200);
}
//通过方法改变对象的字段值即可改变参数的状态,该处的x就是调用该方法的实参的一个副本,两个对象都是对同一个对象的引用。

对此可以将其理解为在Java中只能改变对象参数,因为Holder实际也是一个类,而value只是其类中的一个字段,最终改变的也是字段值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值