Ara*_*raK 49 java swap primitive-types
这是一个问题:编写一个交换两个变量的方法.这两个变量应该是原始的.它不需要是通用的,例如两个int变量.有办法吗?!
mar*_*cus 50
虽然不可能编写一个简单地交换两个变量的函数,但是可以编写一个辅助函数来执行以下操作:
这就是你如何做到的:
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
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为Java语言保证(Java语言规范,Java SE 7版,第15.12.4.2节)所有参数都是从左到右进行评估(不同于其他语言,其中评估的顺序是未定义的),因此执行顺序是:
b以便作为函数的第一个参数传递b = a,并将结果(新值b)作为函数的第二个参数传递b并忽略其新值a如果returnFirst太长,您可以选择较短的名称以使代码更紧凑(例如a = sw(b, b = a)).用它来打动你的朋友并迷惑你的敌人:-)
Tho*_*ens 45
如果不使用数组或对象,则不可能在方法中执行此操作.
Bre*_*ode 18
查看这篇详细解释它的JavaWorld文章:
http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html
两个原语的交换将永远不会起作用,因为原语是通过Java中的值传递的.你甚至无法编写一个方法来交换两个对象.
就像@Thomas所说,你唯一能做的就是将你的原语包含在其他对象/数组中并修改它们.
| 归档时间: |
|
| 查看次数: |
46423 次 |
| 最近记录: |