是否可以在Java中编写交换方法?
2022-08-31 19:42:08
问题是:编写一个交换两个变量的方法。这两个变量应该是基元。它不需要是通用的,例如两个变量。有没有办法?!int
问题是:编写一个交换两个变量的方法。这两个变量应该是基元。它不需要是通用的,例如两个变量。有没有办法?!int
虽然不可能编写一个仅交换两个变量的函数,但可以编写一个帮助器函数,允许您:
这就是你如何做到这一点:
int returnFirst(int x, int y) {
return x;
}
int a = 8, b = 3;
a = returnFirst(b, b = a); // try reading this as a = b; b = a;
System.out.println("a: " + a + ", b: " + b); // prints a: 3, b: 8
这是有效的,因为Java语言保证(Java语言规范,Java SE 7版,第15.12.4.2节)所有参数都是从左到右计算的(与其他一些语言不同,其中评估顺序未定义),因此执行顺序为:
b
b = a
b
b
a
如果太长,您可以选择较短的名称以使代码更紧凑(例如)。用它来打动你的朋友,迷惑你的敌人:-)returnFirst
a = sw(b, b = a)
如果不使用数组或对象,不,就不可能在方法中执行此操作。