首页  >  文章  >  Java  >  当参数按值传递时,如何在 Java 中交换原始变量?

当参数按值传递时,如何在 Java 中交换原始变量?

Linda Hamilton
Linda Hamilton原创
2024-10-27 04:51:30427浏览

How Can You Swap Primitive Variables in Java When Parameter Passing is by Value?

在 Java 中交换原始变量:克服值传递

在 Java 中,参数传递本质上是按值传递的,这在尝试在方法内交换原始变量时带来了挑战。简单的实现,例如:

<code class="java">void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}</code>

实际上不会修改方法外部的原始变量。为了解决这个问题,这里有两种非常规的方法:

返回分配模式

此技术允许通过利用方法调用中的操作顺序进行交换:

<code class="java">int swap(int a, int b) {  // usage: y = swap(x, x=y);
    return a;
}</code>

何时调用 swap(x, x=y),x 的值将在赋值给 x 之前传递到 swap 中。因此,当返回 a 并将其分配给 y 时,它有效地交换了 x 和 y 的值。

具有可变参数的通用交换器

对于更通用的解决方案,可以定义一个通用方法可以交换任意数量的相同类型的对象:

<code class="java"><T> T swap(T... args) {   // usage: z = swap(a, a=b, b=c, ... y=z);
    return args[0];
}</code>

将此方法调用为 z = swap(a, a=b, b=c) 将交换 a、b 和 c 的值,将最终值赋给 z。

以上是当参数按值传递时,如何在 Java 中交换原始变量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn