如果没有可以通过引用传递的方法,如何在java中使我的交换函数有效?有人可以给我一个密码吗?
swap(int a, int b) { int temp = a; a = b; b = temp; }
但是,由于Java通过值传递参数,因此更改不会被反映回来。
你无法创建方法交换,因此在调用swap(x,y)x和y之后将被交换。你可以通过交换可变内容的内容¹来创建此类方法,但这不会更改其对象标识,因此你无法为此定义通用方法。
但是,你可以编写一种方法来交换数组或列表中的两个项目(如果需要的话)。
¹例如,你可以创建一个包含两个列表的交换方法,执行该方法后,列表x将具有列表y的先前内容,列表y将具有列表x的先前内容。
认为这是最接近简单交换的方法,但是它没有简单的用法模式:
int swap(int a, int b) { // usage: y = swap(x, x=y); return a; } y = swap(x, x=y);
它依赖于以下事实:x将传递到swap之前y被分配给x,然后x返回并分配给y。
x
swap
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)