在 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中文网其他相关文章!