交换a和b的值
//交换a和b的值
public void swap(int a ,int b){
??? int temp = a;
??? a = b;
??? b = temp;
}
要求:修改此方法,不能定义temp中间变量,实现值得交换
?
方法一:
public void swap(int a ,int b){b = a + b;a = b - a;b = b - a;System.out.println(" a = " + a );System.out.println(" b = " + b );} ?缺点:可能有数字越界问题,假设 a = INT.MAXVALUE
b = INT.MAXVALUE
?
方法二:就是异或操作
a=a^b;
b=b^a;
a=b^a;
?
public class XOR { /** * @param args */ public static void main(String[] args) { int c=3,d=5; swap(c,d); System.out.println(c+";"+d); } public static void swap(int a, int b){ System.out.println(a+","+b); a = a^b; b = b^a; a = a^b; System.out.println(a+","+b); } } ?方法三:
?
int x = 10;int y = 20;x = y+0*(y=x);
?问题:
可能会有隐藏变量
?
参考:http://www.iteye.com/topic/645596
?