1.水杯交换
public static void main(String[] args){
//倒水思想换位:A,B两杯饮料如何交换到对方杯中。假设再拿一个空杯子C,先将A杯中的饮料倒入C杯中,然后将B杯倒入A杯中(此时A饮料已倒出为空杯),然后再将C杯中的原有A杯饮料倒入B杯中,这样就完成了两杯饮料的交换。
//注意单独写方法时的值传递和引用传递,交换代码如下:
int a = 10, b = 12;
System.out.println("交换前a为:"+a+",b为:"+b);
int c = a;
a = b;
b = c;
System.out.println("交换后a为:"+a+",b为:"+b);
}
2.位运算(^)异交换
public static void main(String[] args){
//使用位运算异(^),注意:只适合整数交换. 思想:一个数异自己得零,异零得自己。算法解析如乘法可以交换位置化简。
//代码如下:
int a=11, b=1;
System.out.println("交换前a为:"+a+",b为:"+b);
a=a^b; //a=a^b;
b=a^b; //b=a^b^b=a^(b^b)=a^0=a,结果为:b=a;
a=a^b; //a=a^b^a=b^(a^a)=b^0=b,结果为:a=b;
System.out.println("交换后a为:"+a+",b为:"+b);
}
3.加减交换
public static void main(String[] args){
int a=11,b=22;
System.out.println("交换前a为:"+a+",b为:"+b);
a=a+b;
b=a-b;
a=a-b;
System.out.println("交换后a为:"+a+",b为:"+b);
}
4.赋值交换
public static void main(String[] args){
int a=11,b=22;
System.out.println("交换前a为:"+a+",b为:"+b);
a = b + (b = a) * 0; //此时b+(b=a)*0时,其中(b=a),b已经等于a的值了.且这里的b+(b=a)*0,b+的b值为原来的b值22.
System.out.println("交换后a为:"+a+",b为:"+b);
}
交换时间效率总结***
// 水杯交换<加减交换<赋值交换<异运算交换
各交换方法的耗时详情参考