Java中的方法参数如何接收调用者的值
Posted 背时的哥哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的方法参数如何接收调用者的值相关的知识,希望对你有一定的参考价值。
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只是其类中的一个字段,最终改变的也是字段值。
以上是关于Java中的方法参数如何接收调用者的值的主要内容,如果未能解决你的问题,请参考以下文章