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中的方法参数如何接收调用者的值的主要内容,如果未能解决你的问题,请参考以下文章

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

java方法参数

java 方法参数-值调用,引用调用问题

java学习笔记:java的方法参数传递

Java是值传递还是引用传递?

java中引用传递和值传递的理解