交换基元的 Java 方法
如果没有可以通过引用传递的方法,如何在java中制作我的交换函数?有人可以给我一个代码吗?
swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
但是这些更改不会反映回来,因为java按值传递参数。
如果没有可以通过引用传递的方法,如何在java中制作我的交换函数?有人可以给我一个代码吗?
swap(int a, int b)
{
int temp = a;
a = b;
b = temp;
}
但是这些更改不会反映回来,因为java按值传递参数。
我认为这是最接近简单交换的方法,但它没有直接的使用模式:
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
您可以将其设为泛型并交换任意数量的相同类型的对象:
<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)
您无法创建方法交换,因此在调用 x 和 y 的值后将被交换。您可以通过交换可变类的内容¹ 来为可变类创建这样的方法,但这不会更改它们的对象标识,并且您无法为此定义通用方法。swap(x,y)
但是,您可以编写一个方法,该方法交换数组或列表中的两个项目(如果这是您想要的)。
¹ 例如,您可以创建一个包含两个列表的交换方法,执行该方法后,列表 x 将具有列表 y 的先前内容,列表 y 将具有列表 x 的先前内容。