交换基元的 Java 方法

新手上路,请多包涵

如果没有我们可以通过引用传递的方法,我如何在 java 中创建我的交换函数?有人可以给我一个代码吗?

 swap(int a, int b)
{
     int temp = a;
     a = b;
     b = temp;
}

但是更改不会反映回来,因为 java 按值传递参数。

原文由 higherDefender 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 240
2 个回答

您不能创建方法交换,因此在调用 swap(x,y) 之后,x 和 y 的值将被交换。您可以通过交换可变类的内容¹为可变类创建这样的方法,但这不会改变它们的对象标识,并且您无法为此定义通用方法。

但是,如果需要,您可以编写一个方法来交换数组或列表中的两个项目。

¹ 例如,您可以创建一个采用两个列表的交换方法,在执行该方法后,列表 x 将具有列表 y 的先前内容,而列表 y 将具有列表 x 的先前内容。

原文由 sepp2k 发布,翻译遵循 CC BY-SA 3.0 许可协议

我认为这是最接近简单交换的方法,但它没有直接的使用模式:

 int swap(int a, int b) {  // usage: y = swap(x, x=y);
   return a;
}

y = swap(x, x=y);

It relies on the fact that x will pass into swap before y is assigned to x , then x 返回并分配给 y

您可以使其通用并交换任意数量的相同类型的对象:

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

c = swap(a, a=b, b=c)

原文由 dansalmo 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏